home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1995 April / Internet Tools.iso / osi / isode / dosisode / DOSISODE80.ZIP / ISODE8.WRK / ROSY / YACC.C_N < prev   
Encoding:
Text File  |  1992-06-28  |  79.0 KB  |  2,431 lines

  1. extern char *malloc(), *realloc();
  2.  
  3. # line 5 "yacc.y"
  4. #ifndef    lint
  5. static char *rcsid = "$Header: /xtel/isode/isode/pepy/RCS/yacc.y.gnrc,v 9.0 1992/06/16 12:25:01 isode Rel $";
  6. #endif
  7.  
  8. /* 
  9.  * $Header: /xtel/isode/isode/pepy/RCS/yacc.y.gnrc,v 9.0 1992/06/16 12:25:01 isode Rel $
  10.  *
  11.  *
  12.  * $Log: yacc.y.gnrc,v $
  13.  * Revision 9.0  1992/06/16  12:25:01  isode
  14.  * Release 8.0
  15.  *
  16.  */
  17.  
  18. /*
  19.  *                  NOTICE
  20.  *
  21.  *    Acquisition, use, and distribution of this module and related
  22.  *    materials are subject to the restrictions of a license agreement.
  23.  *    Consult the Preface in the User's Manual for the full terms of
  24.  *    this agreement.
  25.  *
  26.  */
  27.  
  28.  
  29. #include <stdio.h>
  30. #include <ctype.h>
  31. #include "rosy-defs.h"
  32.  
  33. #define    YYSTYPE    YYSTKTYPE
  34.  
  35.  
  36. #define    YYDEBUG    1
  37.  
  38. extern int pepydebug;
  39. extern int doexternals;
  40.  
  41. int    tagcontrol = TAG_UNKNOWN;
  42. static int    tagdefault;
  43. static int    listtype;
  44. static OID    modid;
  45.  
  46. static int    yyporting = 0;
  47.  
  48. typedef struct ypa {
  49.     char   *ya_text;
  50.     int        ya_lineno;
  51. }        ypa, *YA;
  52. #define    NULLYA    ((YA) 0)
  53. extern double pow ();
  54.  
  55. static YA  new_action (text, lineno)
  56. char   *text;
  57. int    lineno;
  58. {
  59.     register YA        ya;
  60.  
  61.     if ((ya = (YA) calloc (1, sizeof *ya)) == NULLYA)
  62.     yyerror ("out of memory");
  63.  
  64.     ya -> ya_text = text;
  65.     ya -> ya_lineno = lineno;
  66.  
  67.     return ya;
  68. }
  69. #define    free_action(ya)    (void) free ((char *) (ya))
  70.  
  71. typedef struct    {
  72.     char *ys_structname;
  73.     char *ys_ptrname;
  74. } ysa, *YS;
  75. #define NULLYS ((YS) 0)
  76.  
  77. static YS new_ys (str)
  78. char    *str;
  79. {
  80.     register YS    ys;
  81.     register char *p, *q;
  82.     char c;
  83.  
  84.     if((ys = (YS) malloc (sizeof *ys)) == NULLYS)
  85.     yyerror ("out of memory");
  86.     q = str;
  87.     while (isspace ((u_char)*q)) q++;
  88.     for (p = q; isalnum((u_char)*p) || *p == '_'; p++)
  89.     continue;
  90.     if (*p != '\0') {
  91.     c = *p;
  92.     *p = '\0';
  93.     ys -> ys_structname = new_string (q);
  94.     *p = c;
  95.     }
  96.     else {
  97.     ys -> ys_structname = new_string (q);
  98.     ys -> ys_ptrname = NULLCP;
  99.     free (str);
  100.     return ys;
  101.     }
  102.     for (q = p; *q != '$'; q++)
  103.     if (! *q) {
  104.         free (str);
  105.         ys -> ys_ptrname = NULLCP;
  106.         return ys;
  107.     }
  108.     q++;
  109.     while (isspace ((u_char)*q)) q++;
  110.     for (p = q; isalnum((u_char)*p) || *p == '_'; p++)
  111.     continue;
  112.     *p = '\0';
  113.     ys -> ys_ptrname = new_string (q);
  114.     free (str);
  115.     return ys;
  116. }
  117. #define    free_ys(ys) (void) free ((char *) (ys))
  118.  
  119. static int  final_actions = 0;
  120.  
  121. # line 126 "yacc.y"
  122. typedef union     {
  123.     int        yy_number;
  124.     char   *yy_string;
  125.     YP        yy_type;
  126.     YV        yy_value;
  127.     YT        yy_tag;
  128.     YA        yy_action;
  129.     OID        yy_oid;
  130.     YS        yy_sctrl;
  131.     double  yy_real;
  132. } YYSTYPE;
  133. # define ABSENT 257
  134. # define ACTION 258
  135. # define ANY 259
  136. # define APPLICATION 260
  137. # define BAR 261
  138. # define BGIN 262
  139. # define BIT 263
  140. # define BITSTRING 264
  141. # define BOOLEAN 265
  142. # define BY 266
  143. # define CCE 267
  144. # define CHOICE 268
  145. # define COMMA 269
  146. # define COMPONENT 270
  147. # define COMPONENTS 271
  148. # define COMPONENTSOF 272
  149. # define CONTROL 273
  150. # define DECODER 274
  151. # define DEFAULT 275
  152. # define DEFINED 276
  153. # define DEFINITIONS 277
  154. # define DOT 278
  155. # define DOTDOT 279
  156. # define DOTDOTDOT 280
  157. # define ENCODER 281
  158. # define ENCRYPTED 282
  159. # define END 283
  160. # define ENUMERATED 284
  161. # define EXPORTS 285
  162. # define EXPLICIT 286
  163. # define L_FALSE 287
  164. # define FROM 288
  165. # define ID 289
  166. # define IDENTIFIER 290
  167. # define IMPLICIT 291
  168. # define IMPORTS 292
  169. # define INCLUDES 293
  170. # define INTEGER 294
  171. # define LANGLE 295
  172. # define LBRACE 296
  173. # define LBRACKET 297
  174. # define LITNUMBER 298
  175. # define LITSTRING 299
  176. # define LPAREN 300
  177. # define MIN 301
  178. # define MAX 302
  179. # define NAME 303
  180. # define NIL 304
  181. # define OBJECT 305
  182. # define OCTET 306
  183. # define OCTETSTRING 307
  184. # define OF 308
  185. # define OPTIONAL 309
  186. # define PARAMETERTYPE 310
  187. # define PREFIXES 311
  188. # define PRESENT 312
  189. # define PRINTER 313
  190. # define PRIVATE 314
  191. # define RBRACE 315
  192. # define RBRACKET 316
  193. # define REAL 317
  194. # define RPAREN 318
  195. # define SECTIONS 319
  196. # define SEMICOLON 320
  197. # define SEQUENCE 321
  198. # define SEQUENCEOF 322
  199. # define SET 323
  200. # define SETOF 324
  201. # define SIZE 325
  202. # define STRING 326
  203. # define TAGS 327
  204. # define L_TRUE 328
  205. # define UNIVERSAL 329
  206. # define VALA 330
  207. # define VALB 331
  208. # define VALI 332
  209. # define VALS 333
  210. # define VALP 334
  211. # define VALO 335
  212. # define VALOID 336
  213. # define VALR 337
  214. # define VALQ 338
  215. # define VALX 339
  216. # define VLENGTH 340
  217. # define WITH 341
  218. # define SCTRL 342
  219. # define PLUSINFINITY 343
  220. # define MINUSINFINITY 344
  221. # define OPERATION 345
  222. # define ARGUMENT 346
  223. # define RESULT 347
  224. # define ERRORS 348
  225. # define LINKED 349
  226. # define ERROR 350
  227. # define PARAMETER 351
  228. # define ABSTRACT 352
  229. # define OPERATIONS 353
  230. # define CONSUMER 354
  231. # define SUPPLIER 355
  232. # define INVOKES 356
  233. # define PORT 357
  234. # define PORTS 358
  235. # define OBJECTCONSUMER 359
  236. # define OBJECTSUPPLIER 360
  237. # define REFINE 361
  238. # define AS 362
  239. # define RECURRING 363
  240. # define VISIBLE 364
  241. # define PAIRED 365
  242. # define BIND 366
  243. # define UNBIND 367
  244. #define yyclearin yychar = -1
  245. #define yyerrok yyerrflag = 0
  246. extern int yychar;
  247. extern int yyerrflag;
  248. #ifndef YYMAXDEPTH
  249. #define YYMAXDEPTH 150
  250. #endif
  251. YYSTYPE yylval, yyval;
  252. # define YYERRCODE 256
  253.  
  254. # line 1191 "yacc.y"
  255.  
  256.  
  257. #ifdef    HPUX
  258. #define    uchar    Uchar
  259. #endif
  260. #include "lex.c"
  261. int yyexca[] ={
  262. -1, 1,
  263.     0, -1,
  264.     -2, 0,
  265. -1, 55,
  266.     283, 14,
  267.     -2, 211,
  268. -1, 246,
  269.     261, 191,
  270.     269, 191,
  271.     273, 191,
  272.     274, 191,
  273.     279, 191,
  274.     281, 191,
  275.     283, 191,
  276.     295, 191,
  277.     313, 191,
  278.     315, 191,
  279.     318, 191,
  280.     319, 191,
  281.     -2, 110,
  282. -1, 250,
  283.     261, 201,
  284.     269, 201,
  285.     273, 201,
  286.     274, 201,
  287.     279, 201,
  288.     281, 201,
  289.     283, 201,
  290.     289, 201,
  291.     295, 201,
  292.     303, 201,
  293.     313, 201,
  294.     315, 201,
  295.     318, 201,
  296.     319, 201,
  297.     -2, 211,
  298. -1, 258,
  299.     279, 250,
  300.     295, 250,
  301.     -2, 238,
  302. -1, 279,
  303.     296, 100,
  304.     -2, 141,
  305. -1, 318,
  306.     269, 201,
  307.     315, 201,
  308.     -2, 211,
  309. -1, 378,
  310.     269, 205,
  311.     315, 205,
  312.     -2, 154,
  313. -1, 382,
  314.     261, 203,
  315.     269, 203,
  316.     273, 203,
  317.     274, 203,
  318.     279, 203,
  319.     281, 203,
  320.     283, 203,
  321.     289, 203,
  322.     295, 203,
  323.     303, 203,
  324.     313, 203,
  325.     315, 203,
  326.     318, 203,
  327.     319, 203,
  328.     -2, 211,
  329.     };
  330. # define YYNPROD 275
  331. # define YYLAST 1138
  332. int yyact[]={
  333.  
  334.    135,   343,   439,   158,     7,    12,   404,   403,   435,   309,
  335.    248,   361,   321,     6,   297,   324,   405,   338,   386,   328,
  336.    323,   240,   315,   154,   201,   375,   376,   232,   231,    34,
  337.     18,   152,   151,    38,   228,    18,   306,   292,   357,   146,
  338.     46,   151,   152,   140,   303,    51,   220,   401,    18,   137,
  339.     56,   182,   296,    60,   187,    34,    70,   276,    73,   203,
  340.    204,   205,   175,   275,   176,   207,   171,   177,   206,   199,
  341.    235,   184,   180,   175,   134,   176,   293,   167,   177,   164,
  342.    213,   194,    23,    22,   255,   210,    97,   209,   182,   184,
  343.     91,   155,    76,   472,   383,    35,   353,   102,   488,   138,
  344.    141,   145,   156,    20,   327,   487,   182,   165,   168,   168,
  345.    173,   173,    17,   183,   183,   183,   183,    19,   183,   480,
  346.    195,    67,   200,   173,   202,   468,   479,   464,    66,    24,
  347.    215,   196,   133,   456,   214,    96,   448,   221,   427,   426,
  348.    160,   161,   162,   430,   222,   397,   194,   226,   224,   212,
  349.    397,   224,   445,   190,   424,   236,   203,   204,   205,   175,
  350.     68,   176,   207,   445,   177,   206,    69,   272,   379,   369,
  351.    445,   272,   478,   238,    37,   258,   203,   204,   205,   175,
  352.    279,   176,   207,   451,   177,   206,   436,   279,   281,   429,
  353.    454,   399,   285,   280,    41,   159,   396,     8,   438,   339,
  354.    354,   289,   294,   291,   310,   364,   159,   444,    42,   438,
  355.    159,   157,     8,   159,   365,    20,   278,   450,   444,   363,
  356.    304,    20,   282,   284,   298,   444,   286,   305,   290,    30,
  357.     17,   224,    20,   299,    62,    30,    85,   398,    26,   481,
  358.    460,    17,   420,   134,   159,   322,    19,   134,    63,   431,
  359.     86,   173,   307,   417,   395,   301,   330,   359,   346,   341,
  360.    409,   408,   313,   325,   326,   312,   311,   271,   273,   237,
  361.    333,     8,   336,   192,    50,   331,   154,    10,    77,   466,
  362.    192,   183,    11,   345,   192,   382,   183,   345,   348,   295,
  363.      3,   345,   351,    31,    48,    45,   173,    93,   349,   350,
  364.    332,    27,     4,   358,   216,   344,   334,   335,   337,   381,
  365.    470,   469,   355,   467,   449,   425,   380,   360,   374,   378,
  366.    352,   366,   366,   366,   367,   368,   370,    77,   419,   233,
  367.    227,   225,   218,    21,   300,    39,   329,   134,   391,    33,
  368.    270,   150,   402,   317,   208,   258,   193,   414,   388,   149,
  369.    262,   178,   224,   294,   411,   166,     2,   224,    61,   416,
  370.    423,    74,    15,    14,   441,   440,   437,    32,   394,   393,
  371.    392,   390,   422,   268,    75,   385,   265,    25,    40,   410,
  372.    263,   179,   261,   173,   415,   330,   260,   259,   257,    29,
  373.    418,   256,   407,   428,   413,   119,   442,   115,   113,   443,
  374.    110,   109,   432,   388,   433,   373,   434,   352,   372,   371,
  375.    316,   345,   455,   447,   384,   446,   345,   457,   453,    47,
  376.    299,   463,    64,   452,   459,   153,    53,    59,   224,   362,
  377.    148,   147,   144,   462,    92,   366,    94,   465,   143,   442,
  378.    142,   471,   443,    84,    83,    87,    88,    89,    90,    82,
  379.    132,   345,   474,    81,    80,   174,    79,   473,    78,    65,
  380.    224,   172,    72,   181,   169,   188,   476,   475,   477,   131,
  381.    442,   442,    71,   443,   443,    57,   345,   485,   482,   483,
  382.     58,    52,    55,   130,    49,    44,   486,   124,   123,   106,
  383.    224,   229,   117,     5,    54,   185,   186,   189,    43,   191,
  384.    230,    36,    28,     9,    16,    13,   120,   211,   108,   484,
  385.    217,   274,   116,   122,   461,   356,   421,   302,   107,   319,
  386.    377,   129,   239,   139,   219,   136,   277,   118,   111,   101,
  387.    125,   126,   105,   283,   412,   458,   400,   170,   104,   103,
  388.    198,   121,   234,   163,    95,   112,   127,   114,   128,   252,
  389.    130,   251,   249,     1,   124,   123,   106,     0,     0,   117,
  390.      0,     0,     0,     0,     0,     0,     0,     0,     0,    98,
  391.      0,   308,     0,   120,    99,   108,     0,   314,   242,   266,
  392.    250,   100,   340,     0,   264,   107,     0,   244,   129,   243,
  393.    245,     0,   269,     0,   247,   246,   197,   125,   126,     0,
  394.      0,   130,     0,     0,     0,   124,   123,   106,   121,     0,
  395.    117,     0,   112,   127,   114,   128,   184,     0,     0,   241,
  396.      0,     0,     0,     0,   120,     0,   108,     0,     0,   242,
  397.      0,   250,   267,     0,   253,   254,   107,   387,   244,   129,
  398.    243,   245,     0,     0,   389,   247,   246,   197,   125,   126,
  399.      0,     0,   130,     0,     0,     0,   124,   123,   106,   121,
  400.      0,   117,   342,   112,   127,   114,   128,   347,     0,     0,
  401.    241,     0,     0,     0,     0,   120,     0,   108,     0,     0,
  402.    242,     0,   250,     0,     0,   253,   254,   107,     0,   244,
  403.    129,   243,   245,     0,     0,   389,   247,   246,   197,   125,
  404.    126,     0,     0,   130,     0,     0,     0,   124,   123,   106,
  405.    121,     0,   117,     0,   112,   127,   114,   128,     0,     0,
  406.      0,   241,     0,     0,     0,     0,   120,     0,   108,     0,
  407.      0,   242,     0,   250,     0,     0,   253,   254,   107,     0,
  408.    244,   129,   243,   245,   159,     0,     0,   247,   246,   197,
  409.    125,   126,     0,     0,   130,     0,     0,     0,   124,   123,
  410.    106,   121,     0,   117,     0,   112,   127,   114,   128,     0,
  411.      0,     0,   241,     0,     0,     0,     0,   120,     0,   108,
  412.      0,     0,   242,     0,   250,     0,     0,   253,   254,   107,
  413.    192,   244,   129,   243,   245,     0,     0,     0,   247,   246,
  414.    197,   125,   126,     0,     0,   130,     0,     0,     0,   124,
  415.    123,   106,   121,     0,   117,     0,   112,   127,   114,   128,
  416.      0,     0,     0,   241,     0,     0,     0,     0,   120,     0,
  417.    108,     0,     0,   242,     0,   250,     0,     0,   253,   254,
  418.    107,     0,   244,   129,   243,   245,     0,     0,     0,   247,
  419.    246,   197,   125,   126,     0,     0,   130,     0,     0,     0,
  420.    124,   123,   106,   121,     0,   117,     0,   112,   127,   114,
  421.    128,     0,     0,     0,   241,     0,     0,     0,     0,   120,
  422.      0,   108,     0,     0,   242,     0,   318,     0,     0,   253,
  423.    254,   107,     0,   244,   129,   320,   245,     0,     0,     0,
  424.    247,   246,   197,   125,   126,     0,     0,     0,     0,     0,
  425.      0,     0,     0,     0,   121,     0,     0,     0,   112,   127,
  426.    114,   128,   130,     0,     0,   241,   124,   123,   106,     0,
  427.      0,   117,     0,     0,   409,   408,     0,     0,     0,     0,
  428.    253,   254,     0,     0,     0,   120,     0,   108,     0,     0,
  429.      0,     0,   122,     0,     0,     0,     0,   107,     0,     0,
  430.    129,     0,     0,     0,     0,     0,   406,   111,   197,   125,
  431.    126,     0,   130,     0,     0,     0,   124,   123,   106,     0,
  432.    121,   117,     0,     0,   112,   127,   114,   128,     0,     0,
  433.      0,     0,     0,     0,     0,   120,     0,   108,     0,   288,
  434.      0,     0,   122,     0,   287,     0,     0,   107,     0,     0,
  435.    129,     0,     0,     0,     0,     0,   118,   111,   197,   125,
  436.    126,     0,   130,     0,     0,     0,   124,   123,   106,     0,
  437.    121,   117,     0,     0,   112,   127,   114,   128,     0,     0,
  438.      0,     0,     0,     0,     0,   120,     0,   108,     0,     0,
  439.      0,     0,   122,     0,     0,     0,     0,   107,     0,     0,
  440.    129,     0,     0,     0,     0,     0,   223,   111,   197,   125,
  441.    126,     0,   130,     0,     0,     0,   124,   123,   106,     0,
  442.    121,   117,     0,     0,   112,   127,   114,   128,     0,     0,
  443.      0,     0,     0,     0,     0,   120,     0,   108,     0,     0,
  444.      0,     0,   122,     0,     0,     0,     0,   107,     0,     0,
  445.    129,     0,     0,     0,     0,     0,   118,   111,   197,   125,
  446.    126,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  447.    121,     0,     0,     0,   112,   127,   114,   128 };
  448. int yypact[]={
  449.  
  450.      1, -1000,    25,   -25,    -9, -1000, -1000, -1000,   -57,    66,
  451.   -244,  -245, -1000,  -186, -1000, -1000, -1000, -1000, -1000,   -62,
  452.     23, -1000, -1000, -1000, -1000, -1000,   -68,     4,    81,  -223,
  453.  -1000, -1000,  -137, -1000, -1000, -1000,    73,   -95, -1000,    10,
  454.    -95, -1000, -1000,    11,   -18, -1000, -1000,   -95, -1000, -1000,
  455.  -1000, -1000,   -55, -1000,    81,  -153, -1000,   -55,  -228,    58,
  456.  -1000, -1000, -1000, -1000, -1000,   -53,   -95,   -95,   -95,   -95,
  457.  -1000,  -230,   -55, -1000, -1000,     9, -1000,   -55, -1000, -1000,
  458.  -1000, -1000, -1000, -1000, -1000,  -175,   224, -1000, -1000, -1000,
  459.    -95, -1000, -1000,     1, -1000,    79, -1000, -1000,  -297,  -308,
  460.   -313,  -267,   -56,    79,    79,    79,  -252,  -255,  -255,  -273,
  461.   -260, -1000,  -236,  -291,  -254,  -291,    79,  -291,   -22,  -249,
  462.    813,  -268,  -154, -1000,  -239,  -241, -1000, -1000, -1000,  -180,
  463.     28,   -95, -1000,    65, -1000, -1000,  -301,   763, -1000,    64,
  464.    763, -1000,    63, -1000, -1000, -1000,  -319, -1000, -1000,  -324,
  465.   -322,  -328,  -329,    62,  -266,   -27, -1000,   546, -1000,   291,
  466.  -1000, -1000, -1000, -1000, -1000, -1000,   -29, -1000, -1000,   -28,
  467.    -29,  -277, -1000, -1000, -1000, -1000,  -283, -1000, -1000,  -184,
  468.  -1000,  -115, -1000, -1000,   -90,    79,  -184, -1000,  -116,    79,
  469.    713,    79,   813, -1000, -1000, -1000,   -90,   -14, -1000, -1000,
  470.  -1000,  -258,     0, -1000, -1000, -1000,  -288, -1000, -1000, -1000,
  471.  -1000,   -74, -1000, -1000, -1000, -1000,    68, -1000,    79,  -304,
  472.    763, -1000, -1000,   -15,   -90,   -46, -1000,   -99,   -30, -1000,
  473.  -1000,   -31,   -34,   -99, -1000, -1000, -1000,   -99, -1000, -1000,
  474.  -1000, -1000, -1000, -1000,   597, -1000, -1000,   495,   444, -1000,
  475.   -174, -1000, -1000, -1000, -1000,    75, -1000, -1000, -1000, -1000,
  476.  -1000, -1000, -1000, -1000,   813,    21,   -90,    36,   -23, -1000,
  477.  -1000,  -104, -1000,  -104, -1000, -1000, -1000, -1000,   -37, -1000,
  478.   -291, -1000,    32, -1000,   -38,  -291,    32,   813,   813,   -90,
  479.     32,   -90, -1000, -1000, -1000,  -271, -1000,  -220, -1000, -1000,
  480.   -103,   813,  -311,   -39, -1000, -1000,   813, -1000, -1000, -1000,
  481.  -1000,   -84,   -84,   -84, -1000,  -146,    57,  -334,  -174,  -147,
  482.     47,    40, -1000, -1000, -1000, -1000, -1000,    -4,  -224,   291,
  483.  -1000,   -90,   342, -1000,   -90,   -42, -1000,  -119, -1000,   -63,
  484.   -124,   663,    79,   813, -1000, -1000,   663,    79,   813,   -90,
  485.    -90,   -43,  -258, -1000, -1000,   -90,    61,   -54, -1000,   546,
  486.    -90,  -161,    46, -1000, -1000, -1000, -1000,  -176,  -177, -1000,
  487.    -99, -1000, -1000, -1000, -1000, -1000, -1000,  -126, -1000, -1000,
  488.    -49,   546,  -271, -1000,    75, -1000, -1000,   393, -1000, -1000,
  489.  -1000, -1000, -1000, -1000, -1000,   -94, -1000,  -104,   -74, -1000,
  490.   -179,    45, -1000, -1000,   -92, -1000,   -11,   813, -1000,  -118,
  491.     32,   -90,  -182,    45, -1000,    32,   -90,   763, -1000,   -58,
  492.    546,  -188,    40, -1000, -1000,   -84, -1000, -1000, -1000, -1000,
  493.    -10,    44, -1000, -1000, -1000,  -190,    42,    41,   -87, -1000,
  494.  -1000, -1000, -1000, -1000, -1000, -1000, -1000,  -225, -1000,   663,
  495.     32,   546, -1000,   -90, -1000,   813, -1000,   813,  -143, -1000,
  496.  -1000,  -196,    40, -1000, -1000, -1000, -1000,   -59, -1000,  -105,
  497.   -105, -1000,    79, -1000, -1000,    32,   -90,   -90, -1000,   763,
  498.  -1000,  -210,  -217, -1000, -1000, -1000, -1000, -1000, -1000 };
  499. int yypgo[]={
  500.  
  501.      0,   553,   552,   551,   549,   544,     1,    37,   378,   355,
  502.    543,   542,   346,   540,   356,   358,   374,    10,   539,   538,
  503.     24,   537,   344,   351,   536,    47,     7,     6,    16,   535,
  504.    534,   532,   525,   524,   523,   308,    17,    14,    15,   522,
  505.     21,   520,   519,    12,    20,   340,   517,   516,   515,   514,
  506.    512,   507,    36,   505,     9,   363,   362,   504,   381,   503,
  507.    502,   367,   501,   498,   494,     0,   493,   485,   484,   482,
  508.    481,   480,   475,   472,   462,   361,   459,   458,   456,   454,
  509.    453,   449,   444,   443,   440,   343,   438,   432,    11,   431,
  510.    430,   349,   341,   429,   425,    22,   410,   409,   408,   405,
  511.    401,   400,   398,   397,   395,   392,     3,   350,    84,    19,
  512.    391,   388,   387,   386,   382,   380,   376,   375,   373,    18,
  513.    371,   370,   369,   368,     8,   366,     2,   365,   364 };
  514. int yyr1[]={
  515.  
  516.      0,    60,    64,     1,    59,    59,    59,    14,    66,    66,
  517.     61,    61,    62,    62,    63,    70,    67,    67,    71,    71,
  518.     72,    68,    68,    73,    73,    74,    74,    75,    16,    16,
  519.     15,    15,    69,    69,    76,    76,    76,    76,    76,     8,
  520.      8,    77,    77,    77,    77,    77,    77,    79,    32,    32,
  521.     33,    33,    46,    46,    48,    48,    47,    47,    49,    49,
  522.     80,    34,    34,    81,    85,    85,    84,    84,    84,    86,
  523.     87,    87,    89,    89,    90,    90,    91,    92,    88,    88,
  524.     93,    93,    93,    93,    82,    94,    94,    95,    95,    96,
  525.     97,    97,    98,    99,    99,    78,    17,    17,    17,    52,
  526.     52,     6,     6,     5,     5,    18,    18,    18,    18,    18,
  527.     18,    18,    18,    18,    18,    18,    18,    18,    18,    18,
  528.     18,    18,    18,    18,    18,    18,    45,    45,    19,    19,
  529.     20,    20,    20,    20,    20,    20,   104,   104,    11,    11,
  530.     12,    12,    10,    10,     9,     9,    21,    21,    22,    22,
  531.     22,    22,    13,    13,    23,     7,     7,    35,    35,    36,
  532.     37,    37,    24,    24,    30,    30,    25,    25,    26,    26,
  533.     26,    26,    26,    27,    27,    28,    29,    29,    50,    51,
  534.     51,    51,    51,    83,    38,    38,    39,    39,    39,    39,
  535.     39,    39,    39,    39,    39,    39,     2,     2,     4,     4,
  536.      3,    40,    40,    40,    41,    41,    42,    42,    43,    43,
  537.     44,    65,   101,   101,   100,   100,   102,   102,   103,   103,
  538.    105,   105,    54,    53,    53,    55,    55,    56,    56,    57,
  539.     31,    31,    31,   106,   108,   108,   109,   109,   110,   110,
  540.    110,   110,   111,   111,   112,   113,   116,   116,   117,   117,
  541.    118,   118,   119,   119,   107,   114,   115,   115,   120,   121,
  542.    121,   122,   123,   124,   124,   125,   125,   126,   126,   126,
  543.    127,   128,   128,    58,    58 };
  544. int yyr2[]={
  545.  
  546.      0,     1,     1,    24,     5,     5,     3,     5,     3,     2,
  547.      3,     2,     9,     2,     6,     1,     9,     2,     2,     2,
  548.      1,     9,     2,     2,     2,     4,     2,     7,     7,     3,
  549.      2,     2,     6,     2,     5,     5,     5,     9,     2,     3,
  550.      3,     2,     2,     2,     2,     2,     2,    17,     5,     3,
  551.      5,     3,     9,     3,     9,     3,     3,     3,     3,     3,
  552.     11,     5,     3,    10,     2,     2,     2,     2,     2,    10,
  553.      2,     2,     2,     2,     4,     4,    10,    10,     2,     6,
  554.      2,     2,     2,     2,    10,     8,     2,     6,     2,     4,
  555.      2,     2,     2,     2,     2,    13,     5,     5,     5,     2,
  556.      3,     2,     3,     2,     3,     5,     7,    11,     7,     5,
  557.      3,     7,    11,    13,     7,    11,    13,     9,     9,     7,
  558.     15,     7,     5,     7,     5,     5,     7,     3,     7,    11,
  559.      3,     3,     3,     5,     3,     2,     2,     8,     2,     3,
  560.      2,     3,     2,     3,     2,     3,     5,     2,     3,     5,
  561.      3,     2,     2,     3,     3,     2,     3,     3,     7,    11,
  562.      3,     2,     3,     3,     3,     3,     3,     7,     3,     7,
  563.      9,     3,     5,     7,     3,     5,     3,     7,     9,     3,
  564.      3,     3,     3,     8,     2,     2,     3,     3,     3,     9,
  565.      3,     3,     7,     5,     5,     3,     2,     2,     3,     3,
  566.     15,     3,     3,     7,     7,     3,     3,     3,     3,     7,
  567.      3,     0,     4,     2,     2,     4,     2,     4,     2,     4,
  568.      2,     4,     7,     2,     5,     2,     2,     3,     3,     9,
  569.      4,    15,    15,     8,     2,     2,     6,     2,     2,     2,
  570.      2,     2,     2,     2,     4,     6,     2,     4,     2,     4,
  571.      2,     2,     2,     2,     4,     4,     6,     6,     2,     2,
  572.      2,     6,    10,     2,     6,     4,     2,     2,     2,     2,
  573.      2,     2,     2,     3,     3 };
  574. int yychk[]={
  575.  
  576.  -1000,    -1,   -14,   289,   277,   -66,   -54,   -65,   296,   -59,
  577.    286,   291,   -65,   -53,   -55,   -56,   -57,   298,   -40,   303,
  578.    289,   267,   327,   327,   315,   -55,   300,   278,   -60,   -56,
  579.    303,   289,   -61,   258,   -65,   318,   -62,   311,   -65,   262,
  580.     -8,   289,   303,   -63,   -67,   285,   -65,    -8,   283,   -68,
  581.    292,   -65,   -70,    -8,   -64,   -69,   -65,   -72,   -71,   -16,
  582.    -65,   -15,   289,   303,   -61,   -76,   281,   274,   313,   319,
  583.    -65,   -73,   -74,   -65,   -75,   -16,   320,   269,   -77,   -78,
  584.    -79,   -80,   -81,   -82,   -83,   289,   303,    -8,    -8,    -8,
  585.     -8,   320,   -75,   288,   -15,    -5,   310,   -65,   345,   350,
  586.    357,   305,   -17,   -18,   -19,   -31,   265,   294,   284,  -100,
  587.   -101,   304,   321,  -102,   323,  -103,   -50,   268,   303,  -104,
  588.    282,   317,   289,   264,   263,   306,   307,   322,   324,   297,
  589.    259,    -8,   -14,   -52,   258,   -65,   -32,   346,   -65,   -34,
  590.    351,   -65,   -84,   -86,   -87,   -65,   352,   -89,   -90,   -91,
  591.    -92,   354,   355,   -94,   290,   358,   -65,   267,  -106,   300,
  592.    -52,   -52,   -52,   -10,   331,   -65,    -9,   332,   -65,    -9,
  593.    -21,   339,   -23,   -65,   -22,   333,   335,   338,   -23,   -58,
  594.    308,  -107,   342,   -65,   325,   -58,   -58,   308,  -107,   -58,
  595.    -52,   -58,   295,   -12,   330,   -65,   -17,   305,   -13,   337,
  596.    -65,   -20,   278,   330,   331,   332,   339,   336,   -22,   326,
  597.    326,   -51,   329,   260,   314,   -65,   276,    -8,   267,   -33,
  598.    347,   -65,   -27,   303,   -17,   267,   -27,   267,   353,   -92,
  599.    -91,   356,   356,   267,   -11,   336,   -65,   296,   -38,   -39,
  600.    -40,   328,   287,   298,   296,   299,   304,   303,   -17,    -2,
  601.    289,    -3,    -4,   343,   344,  -108,  -110,  -111,   -38,  -112,
  602.   -113,  -114,  -107,  -115,   293,  -116,   288,   341,  -118,   301,
  603.    -45,   296,   -65,   296,   -45,   340,   340,   -12,   -52,   -65,
  604.    308,  -106,   -52,   -12,   -52,   308,   -52,   291,   286,   -17,
  605.    -52,   -17,    -7,   334,   -65,   289,   340,   -37,   298,   -40,
  606.    266,   -52,   -46,   348,   -65,   -27,   -52,   298,   -85,   -54,
  607.    303,   296,   296,   296,   -85,   -95,   -96,   -85,   289,   -42,
  608.    298,   -43,   -65,   -44,   -38,   -38,   -38,   278,  -109,   261,
  609.    -65,   -17,   279,  -106,   270,   271,   295,   -35,   -36,   303,
  610.    -35,   296,   -58,    -6,   273,   -65,   296,   -58,    -6,   -17,
  611.    -17,    -6,   -20,   316,   303,   -17,   -48,   349,   -65,   296,
  612.    -17,   -88,   -93,   303,   289,   298,   -54,   -88,   -88,   315,
  613.    269,   -97,   -98,   -99,   -65,   359,   360,   -41,   -65,   315,
  614.    269,   269,   289,   318,  -108,  -117,  -119,   295,   -38,   302,
  615.   -120,  -106,  -121,  -122,  -123,   296,   315,   269,   300,   315,
  616.    -24,   -25,   -65,   -26,   -27,   -28,   303,  -105,   272,   271,
  617.    -52,   -17,   -30,   -25,   -65,   -52,   -17,   296,    -7,   267,
  618.    296,   -47,   -43,   -65,   315,   269,   315,   315,   -95,   315,
  619.    269,   298,   -44,  -109,  -119,  -124,   280,  -125,   303,  -126,
  620.   -127,  -128,   -65,  -106,   312,   257,   -36,   -37,   315,   269,
  621.    309,   275,   -28,   -17,   308,    -6,   315,    -6,   -29,   -27,
  622.    298,   -49,   -43,   -65,   315,   -88,   289,   269,   315,   269,
  623.    269,  -126,   318,   -26,    -6,   -38,   -17,   -17,   315,   269,
  624.    315,   298,  -124,  -124,   -52,    -6,   -27,   315,   315 };
  625. int yydef[]={
  626.  
  627.      0,    -2,     0,   211,   211,     7,     8,     9,     0,     0,
  628.      0,     0,     6,     0,   223,   225,   226,   227,   228,   202,
  629.    201,     1,     4,     5,   222,   224,     0,     0,   211,     0,
  630.    202,   203,   211,    10,    11,   229,     0,     0,    13,   211,
  631.      0,    39,    40,     0,   211,    15,    17,     0,     2,   211,
  632.     20,    22,   211,    12,   211,    -2,    33,   211,     0,    18,
  633.     19,    29,    30,    31,     3,     0,     0,     0,     0,     0,
  634.     38,     0,    23,    24,    26,     0,    16,     0,    32,    41,
  635.     42,    43,    44,    45,    46,   211,     0,    34,    35,    36,
  636.      0,    21,    25,     0,    28,   211,   103,   104,   211,   211,
  637.    211,   211,     0,   211,   211,   211,   211,   211,   211,   211,
  638.    211,   110,   211,   211,   211,   211,   211,   211,     0,   211,
  639.      0,   211,   211,   214,     0,     0,   213,   216,   218,   211,
  640.    136,     0,    27,     0,    99,   100,   211,     0,    49,     0,
  641.      0,    62,     0,    66,    67,    68,     0,    70,    71,    72,
  642.     73,     0,     0,     0,   211,     0,    86,     0,   230,     0,
  643.     96,    97,    98,   105,   142,   143,   211,   144,   145,     0,
  644.    211,     0,   147,   154,   109,   148,     0,   150,   151,   211,
  645.    217,     0,   273,   274,     0,   211,   211,   219,     0,   211,
  646.      0,   211,     0,   122,   140,   141,   124,     0,   125,   152,
  647.    153,   211,     0,   130,   131,   132,     0,   134,   135,   215,
  648.    212,     0,   179,   180,   181,   182,     0,    37,   211,   211,
  649.      0,    51,    48,   211,   174,     0,    61,     0,     0,    74,
  650.     75,     0,     0,     0,   123,   138,   139,     0,   183,   184,
  651.    185,   186,   187,   188,   211,   190,    -2,   202,     0,   195,
  652.     -2,   196,   197,   198,   199,   211,   234,   235,    -2,   239,
  653.    240,   241,   242,   243,     0,     0,     0,     0,   246,   251,
  654.    106,     0,   127,     0,   108,   146,   149,   111,     0,    -2,
  655.    211,   254,   211,   114,     0,   211,   211,     0,     0,   119,
  656.    211,   121,   128,   155,   156,   211,   133,     0,   160,   161,
  657.      0,     0,   211,     0,    53,    50,     0,    60,    63,    64,
  658.     65,     0,     0,     0,    84,     0,    88,   211,    -2,     0,
  659.    188,   206,   207,   208,   210,   193,   194,     0,     0,     0,
  660.    237,   244,     0,   255,     0,     0,   247,     0,   157,     0,
  661.      0,   211,   211,     0,   101,   102,   211,   211,     0,   117,
  662.    118,     0,   211,   178,   137,    95,     0,     0,    55,   211,
  663.    173,     0,    78,    80,    81,    82,    83,     0,     0,    85,
  664.      0,    89,    90,    91,    92,    93,    94,     0,    -2,   192,
  665.      0,     0,    -2,   233,   211,   245,   248,     0,   252,   253,
  666.    256,   258,   257,   259,   260,   211,   126,     0,     0,   107,
  667.      0,   162,   163,   166,   168,   171,   211,     0,   220,     0,
  668.    211,   112,     0,   164,   165,   211,   115,     0,   129,     0,
  669.    211,     0,    56,    57,    69,     0,    76,    77,    87,   189,
  670.      0,     0,   209,   236,   249,     0,     0,   263,   211,   266,
  671.    267,   268,   269,   270,   271,   272,   158,     0,   113,     0,
  672.    211,     0,   172,   175,   221,     0,   116,     0,     0,   176,
  673.     47,     0,    58,    59,    52,    79,   204,     0,   261,   211,
  674.    211,   265,   211,   167,   169,   211,   232,   231,   120,     0,
  675.     54,     0,     0,   264,   159,   170,   177,   200,   262 };
  676. typedef struct { char *t_name; int t_val; } yytoktype;
  677. #ifndef YYDEBUG
  678. #    define YYDEBUG    0    /* don't allow debugging */
  679. #endif
  680.  
  681. #if YYDEBUG
  682.  
  683. yytoktype yytoks[] =
  684. {
  685.     "ABSENT",    257,
  686.     "ACTION",    258,
  687.     "ANY",    259,
  688.     "APPLICATION",    260,
  689.     "BAR",    261,
  690.     "BGIN",    262,
  691.     "BIT",    263,
  692.     "BITSTRING",    264,
  693.     "BOOLEAN",    265,
  694.     "BY",    266,
  695.     "CCE",    267,
  696.     "CHOICE",    268,
  697.     "COMMA",    269,
  698.     "COMPONENT",    270,
  699.     "COMPONENTS",    271,
  700.     "COMPONENTSOF",    272,
  701.     "CONTROL",    273,
  702.     "DECODER",    274,
  703.     "DEFAULT",    275,
  704.     "DEFINED",    276,
  705.     "DEFINITIONS",    277,
  706.     "DOT",    278,
  707.     "DOTDOT",    279,
  708.     "DOTDOTDOT",    280,
  709.     "ENCODER",    281,
  710.     "ENCRYPTED",    282,
  711.     "END",    283,
  712.     "ENUMERATED",    284,
  713.     "EXPORTS",    285,
  714.     "EXPLICIT",    286,
  715.     "L_FALSE",    287,
  716.     "FROM",    288,
  717.     "ID",    289,
  718.     "IDENTIFIER",    290,
  719.     "IMPLICIT",    291,
  720.     "IMPORTS",    292,
  721.     "INCLUDES",    293,
  722.     "INTEGER",    294,
  723.     "LANGLE",    295,
  724.     "LBRACE",    296,
  725.     "LBRACKET",    297,
  726.     "LITNUMBER",    298,
  727.     "LITSTRING",    299,
  728.     "LPAREN",    300,
  729.     "MIN",    301,
  730.     "MAX",    302,
  731.     "NAME",    303,
  732.     "NIL",    304,
  733.     "OBJECT",    305,
  734.     "OCTET",    306,
  735.     "OCTETSTRING",    307,
  736.     "OF",    308,
  737.     "OPTIONAL",    309,
  738.     "PARAMETERTYPE",    310,
  739.     "PREFIXES",    311,
  740.     "PRESENT",    312,
  741.     "PRINTER",    313,
  742.     "PRIVATE",    314,
  743.     "RBRACE",    315,
  744.     "RBRACKET",    316,
  745.     "REAL",    317,
  746.     "RPAREN",    318,
  747.     "SECTIONS",    319,
  748.     "SEMICOLON",    320,
  749.     "SEQUENCE",    321,
  750.     "SEQUENCEOF",    322,
  751.     "SET",    323,
  752.     "SETOF",    324,
  753.     "SIZE",    325,
  754.     "STRING",    326,
  755.     "TAGS",    327,
  756.     "L_TRUE",    328,
  757.     "UNIVERSAL",    329,
  758.     "VALA",    330,
  759.     "VALB",    331,
  760.     "VALI",    332,
  761.     "VALS",    333,
  762.     "VALP",    334,
  763.     "VALO",    335,
  764.     "VALOID",    336,
  765.     "VALR",    337,
  766.     "VALQ",    338,
  767.     "VALX",    339,
  768.     "VLENGTH",    340,
  769.     "WITH",    341,
  770.     "SCTRL",    342,
  771.     "PLUSINFINITY",    343,
  772.     "MINUSINFINITY",    344,
  773.     "OPERATION",    345,
  774.     "ARGUMENT",    346,
  775.     "RESULT",    347,
  776.     "ERRORS",    348,
  777.     "LINKED",    349,
  778.     "ERROR",    350,
  779.     "PARAMETER",    351,
  780.     "ABSTRACT",    352,
  781.     "OPERATIONS",    353,
  782.     "CONSUMER",    354,
  783.     "SUPPLIER",    355,
  784.     "INVOKES",    356,
  785.     "PORT",    357,
  786.     "PORTS",    358,
  787.     "OBJECTCONSUMER",    359,
  788.     "OBJECTSUPPLIER",    360,
  789.     "REFINE",    361,
  790.     "AS",    362,
  791.     "RECURRING",    363,
  792.     "VISIBLE",    364,
  793.     "PAIRED",    365,
  794.     "BIND",    366,
  795.     "UNBIND",    367,
  796.     "-unknown-",    -1    /* ends search */
  797. };
  798.  
  799. char * yyreds[] =
  800. {
  801.     "-no such reduction-",
  802.     "ModuleDefinition : ModuleIdentifier DEFINITIONS TagDefault CCE",
  803.     "ModuleDefinition : ModuleIdentifier DEFINITIONS TagDefault CCE ModuleActions ModulePrefixes BGIN ModuleBody END",
  804.     "ModuleDefinition : ModuleIdentifier DEFINITIONS TagDefault CCE ModuleActions ModulePrefixes BGIN ModuleBody END ModuleActions",
  805.     "TagDefault : EXPLICIT TAGS",
  806.     "TagDefault : IMPLICIT TAGS",
  807.     "TagDefault : empty",
  808.     "ModuleIdentifier : ID AssignedIdentifier",
  809.     "AssignedIdentifier : ObjectIdentifierValue",
  810.     "AssignedIdentifier : empty",
  811.     "ModuleActions : ACTION",
  812.     "ModuleActions : empty",
  813.     "ModulePrefixes : PREFIXES String String String",
  814.     "ModulePrefixes : empty",
  815.     "ModuleBody : Exports Imports AssignmentList",
  816.     "Exports : EXPORTS",
  817.     "Exports : EXPORTS SymbolsExported SEMICOLON",
  818.     "Exports : empty",
  819.     "SymbolsExported : SymbolList",
  820.     "SymbolsExported : empty",
  821.     "Imports : IMPORTS",
  822.     "Imports : IMPORTS SymbolsImported SEMICOLON",
  823.     "Imports : empty",
  824.     "SymbolsImported : SymbolsFromModuleList",
  825.     "SymbolsImported : empty",
  826.     "SymbolsFromModuleList : SymbolsFromModuleList SymbolsFromModule",
  827.     "SymbolsFromModuleList : SymbolsFromModule",
  828.     "SymbolsFromModule : SymbolList FROM ModuleIdentifier",
  829.     "SymbolList : SymbolList COMMA Symbol",
  830.     "SymbolList : Symbol",
  831.     "Symbol : ID",
  832.     "Symbol : NAME",
  833.     "AssignmentList : AssignmentList Section Assignment",
  834.     "AssignmentList : empty",
  835.     "Section : ENCODER String",
  836.     "Section : DECODER String",
  837.     "Section : PRINTER String",
  838.     "Section : SECTIONS String String String",
  839.     "Section : empty",
  840.     "String : ID",
  841.     "String : NAME",
  842.     "Assignment : Typeassignment",
  843.     "Assignment : OperationDefinition",
  844.     "Assignment : ErrorDefinition",
  845.     "Assignment : PortDefinition",
  846.     "Assignment : ObjectDefinition",
  847.     "Assignment : Valueassignment",
  848.     "OperationDefinition : NAME OPERATION Argument Result Errors LinkedOperations CCE LITNUMBER",
  849.     "Argument : ARGUMENT NamedType",
  850.     "Argument : empty",
  851.     "Result : RESULT NamedType",
  852.     "Result : empty",
  853.     "Errors : ERRORS LBRACE ErrorNames RBRACE",
  854.     "Errors : empty",
  855.     "LinkedOperations : LINKED LBRACE LinkedOperationNames RBRACE",
  856.     "LinkedOperations : empty",
  857.     "ErrorNames : NamedValueList",
  858.     "ErrorNames : empty",
  859.     "LinkedOperationNames : NamedValueList",
  860.     "LinkedOperationNames : empty",
  861.     "ErrorDefinition : NAME ERROR Parameter CCE LITNUMBER",
  862.     "Parameter : PARAMETER NamedType",
  863.     "Parameter : empty",
  864.     "PortDefinition : NAME PORT PortOperations CCE PortValue",
  865.     "PortValue : ObjectIdentifierValue",
  866.     "PortValue : NAME",
  867.     "PortOperations : PortSymmetrical",
  868.     "PortOperations : PortAsymetrical",
  869.     "PortOperations : empty",
  870.     "PortSymmetrical : ABSTRACT OPERATIONS LBRACE PortOperationList RBRACE",
  871.     "PortAsymetrical : PortOneSided",
  872.     "PortAsymetrical : PortTwoSided",
  873.     "PortOneSided : PortConsumer",
  874.     "PortOneSided : PortSupplier",
  875.     "PortTwoSided : PortConsumer PortSupplier",
  876.     "PortTwoSided : PortSupplier PortConsumer",
  877.     "PortConsumer : CONSUMER INVOKES LBRACE PortOperationList RBRACE",
  878.     "PortSupplier : SUPPLIER INVOKES LBRACE PortOperationList RBRACE",
  879.     "PortOperationList : OperationValue",
  880.     "PortOperationList : OperationValue COMMA PortOperationList",
  881.     "OperationValue : NAME",
  882.     "OperationValue : ID",
  883.     "OperationValue : LITNUMBER",
  884.     "OperationValue : ObjectIdentifierValue",
  885.     "ObjectDefinition : NAME OBJECT ObjectType CCE PortValue",
  886.     "ObjectType : PORTS LBRACE ObjectPortList RBRACE",
  887.     "ObjectType : empty",
  888.     "ObjectPortList : ObjectPort COMMA ObjectPortList",
  889.     "ObjectPortList : ObjectPort",
  890.     "ObjectPort : PortValue ObjectPortType",
  891.     "ObjectPortType : ObjectSymetric",
  892.     "ObjectPortType : ObjectAsymetric",
  893.     "ObjectSymetric : empty",
  894.     "ObjectAsymetric : OBJECTCONSUMER",
  895.     "ObjectAsymetric : OBJECTSUPPLIER",
  896.     "Typeassignment : ID ParameterType Action CCE Action Type",
  897.     "Type : BuiltinType Action",
  898.     "Type : DefinedType Action",
  899.     "Type : SubType Action",
  900.     "Action : ACTION",
  901.     "Action : empty",
  902.     "Control : CONTROL",
  903.     "Control : empty",
  904.     "ParameterType : PARAMETERTYPE",
  905.     "ParameterType : empty",
  906.     "BuiltinType : BOOLEAN PassBool",
  907.     "BuiltinType : INTEGER PassInt NNlist",
  908.     "BuiltinType : ENUMERATED PassInt LBRACE NamedNumberList RBRACE",
  909.     "BuiltinType : Bitstring PassBit NNlist",
  910.     "BuiltinType : Octetstring PassString",
  911.     "BuiltinType : NIL",
  912.     "BuiltinType : SEQUENCE Sctrl PassAny",
  913.     "BuiltinType : SequenceOf Sctrl Action Control Type",
  914.     "BuiltinType : SEQUENCE Sctrl Action LBRACE ElementTypes RBRACE",
  915.     "BuiltinType : SET Sctrl PassAny",
  916.     "BuiltinType : SetOf Sctrl Action Control Type",
  917.     "BuiltinType : SET Sctrl Action LBRACE MemberTypes RBRACE",
  918.     "BuiltinType : Tag Action IMPLICIT Type",
  919.     "BuiltinType : Tag Action EXPLICIT Type",
  920.     "BuiltinType : Tag Action Type",
  921.     "BuiltinType : CHOICE Sctrl Action Control LBRACE AlternativeTypeList RBRACE",
  922.     "BuiltinType : NAME LANGLE Type",
  923.     "BuiltinType : AnyType PassAny",
  924.     "BuiltinType : OBJECT IDENTIFIER PassOid",
  925.     "BuiltinType : ENCRYPTED Type",
  926.     "BuiltinType : REAL PassReal",
  927.     "NNlist : LBRACE NamedNumberList RBRACE",
  928.     "NNlist : empty",
  929.     "DefinedType : ID PassValue ValParameter",
  930.     "DefinedType : ID DOT ID PassValue ValParameter",
  931.     "PassValue : VALA",
  932.     "PassValue : VALB",
  933.     "PassValue : VALI",
  934.     "PassValue : VALX VLENGTH",
  935.     "PassValue : VALOID",
  936.     "PassValue : PassString",
  937.     "AnyType : ANY",
  938.     "AnyType : ANY DEFINED BY NAME",
  939.     "PassOid : VALOID",
  940.     "PassOid : empty",
  941.     "PassAny : VALA",
  942.     "PassAny : empty",
  943.     "PassBool : VALB",
  944.     "PassBool : empty",
  945.     "PassInt : VALI",
  946.     "PassInt : empty",
  947.     "PassBit : VALX VLENGTH",
  948.     "PassBit : NullPass",
  949.     "PassString : VALS",
  950.     "PassString : VALO VLENGTH",
  951.     "PassString : VALQ",
  952.     "PassString : NullPass",
  953.     "PassReal : VALR",
  954.     "PassReal : empty",
  955.     "NullPass : empty",
  956.     "ValParameter : VALP",
  957.     "ValParameter : empty",
  958.     "NamedNumberList : NamedNumber",
  959.     "NamedNumberList : NamedNumberList COMMA NamedNumber",
  960.     "NamedNumber : NAME LPAREN NumericValue RPAREN Action",
  961.     "NumericValue : LITNUMBER",
  962.     "NumericValue : DefinedValue",
  963.     "ElementTypes : OptionalTypeList",
  964.     "ElementTypes : empty",
  965.     "MemberTypes : OptionalTypeList",
  966.     "MemberTypes : empty",
  967.     "OptionalTypeList : OptionalType",
  968.     "OptionalTypeList : OptionalTypeList COMMA OptionalType",
  969.     "OptionalType : NamedType",
  970.     "OptionalType : NamedType OPTIONAL Control",
  971.     "OptionalType : NamedType DEFAULT Value Control",
  972.     "OptionalType : ComponentsOf",
  973.     "OptionalType : NAME ComponentsOf",
  974.     "NamedType : NAME Action Type",
  975.     "NamedType : Type",
  976.     "ComponentsOf : Components Type",
  977.     "AlternativeTypeList : NamedType",
  978.     "AlternativeTypeList : AlternativeTypeList COMMA NamedType",
  979.     "Tag : LBRACKET Class NumericValue RBRACKET",
  980.     "Class : UNIVERSAL",
  981.     "Class : APPLICATION",
  982.     "Class : PRIVATE",
  983.     "Class : empty",
  984.     "Valueassignment : NAME Type CCE Value",
  985.     "Value : BuiltinValue",
  986.     "Value : DefinedValue",
  987.     "BuiltinValue : L_TRUE",
  988.     "BuiltinValue : L_FALSE",
  989.     "BuiltinValue : LITNUMBER",
  990.     "BuiltinValue : LBRACE ID IdentifierList RBRACE",
  991.     "BuiltinValue : LITSTRING",
  992.     "BuiltinValue : NIL",
  993.     "BuiltinValue : LBRACE Values RBRACE",
  994.     "BuiltinValue : NAME Value",
  995.     "BuiltinValue : Type Value",
  996.     "BuiltinValue : RealValue",
  997.     "RealValue : NumericRealValue",
  998.     "RealValue : SpecialRealValue",
  999.     "SpecialRealValue : PLUSINFINITY",
  1000.     "SpecialRealValue : MINUSINFINITY",
  1001.     "NumericRealValue : LBRACE LITNUMBER COMMA LITNUMBER COMMA LITNUMBER RBRACE",
  1002.     "DefinedValue : ID",
  1003.     "DefinedValue : NAME",
  1004.     "DefinedValue : ID DOT ID",
  1005.     "IdentifierList : IdentifierList COMMA ID",
  1006.     "IdentifierList : empty",
  1007.     "Values : NamedValueList",
  1008.     "Values : empty",
  1009.     "NamedValueList : NamedValue",
  1010.     "NamedValueList : NamedValueList COMMA NamedValue",
  1011.     "NamedValue : Value",
  1012.     "empty : /* empty */",
  1013.     "Octetstring : OCTET STRING",
  1014.     "Octetstring : OCTETSTRING",
  1015.     "Bitstring : BITSTRING",
  1016.     "Bitstring : BIT STRING",
  1017.     "SequenceOf : SEQUENCEOF",
  1018.     "SequenceOf : SEQUENCE OF",
  1019.     "SetOf : SETOF",
  1020.     "SetOf : SET OF",
  1021.     "Components : COMPONENTSOF",
  1022.     "Components : COMPONENTS OF",
  1023.     "ObjectIdentifierValue : LBRACE ObjIdComponentList RBRACE",
  1024.     "ObjIdComponentList : ObjIdComponent",
  1025.     "ObjIdComponentList : ObjIdComponentList ObjIdComponent",
  1026.     "ObjIdComponent : NumberForm",
  1027.     "ObjIdComponent : NameAndNumberForm",
  1028.     "NumberForm : LITNUMBER",
  1029.     "NumberForm : DefinedValue",
  1030.     "NameAndNumberForm : NAME LPAREN NumberForm RPAREN",
  1031.     "SubType : Type SubtypeSpec",
  1032.     "SubType : SET SizeConstraint OF Sctrl Action Control Type",
  1033.     "SubType : SEQUENCE SizeConstraint OF Sctrl Action Control Type",
  1034.     "SubtypeSpec : LPAREN SubtypeAlternative SubtypeAlternativeList RPAREN",
  1035.     "SubtypeAlternative : SubtypeValueSet",
  1036.     "SubtypeAlternative : SubtypeConstraint",
  1037.     "SubtypeAlternativeList : BAR SubtypeAlternative SubtypeAlternativeList",
  1038.     "SubtypeAlternativeList : empty",
  1039.     "SubtypeValueSet : Value",
  1040.     "SubtypeValueSet : ContainedSubType",
  1041.     "SubtypeValueSet : ValueRange",
  1042.     "SubtypeValueSet : PermittedAlphabet",
  1043.     "SubtypeConstraint : SizeConstraint",
  1044.     "SubtypeConstraint : InnerTypeConstraint",
  1045.     "ContainedSubType : INCLUDES Type",
  1046.     "ValueRange : LowerEndPoint DOTDOT UpperEndpoint",
  1047.     "LowerEndPoint : LowerEndValue",
  1048.     "LowerEndPoint : LowerEndValue LANGLE",
  1049.     "UpperEndpoint : UpperEndValue",
  1050.     "UpperEndpoint : LANGLE UpperEndValue",
  1051.     "LowerEndValue : Value",
  1052.     "LowerEndValue : MIN",
  1053.     "UpperEndValue : Value",
  1054.     "UpperEndValue : MAX",
  1055.     "SizeConstraint : SIZE SubtypeSpec",
  1056.     "PermittedAlphabet : FROM SubtypeSpec",
  1057.     "InnerTypeConstraint : WITH COMPONENT SingleTypeConstraint",
  1058.     "InnerTypeConstraint : WITH COMPONENTS MultipleTypeConstraints",
  1059.     "SingleTypeConstraint : SubtypeSpec",
  1060.     "MultipleTypeConstraints : FullSpecification",
  1061.     "MultipleTypeConstraints : PartialSpecification",
  1062.     "FullSpecification : LBRACE TypeConstraints RBRACE",
  1063.     "PartialSpecification : LBRACE DOTDOTDOT COMMA TypeConstraints RBRACE",
  1064.     "TypeConstraints : NamedConstraint",
  1065.     "TypeConstraints : NamedConstraint COMMA TypeConstraints",
  1066.     "NamedConstraint : NAME Constraint",
  1067.     "NamedConstraint : Constraint",
  1068.     "Constraint : ValueConstraint",
  1069.     "Constraint : PresenceConstraint",
  1070.     "Constraint : empty",
  1071.     "ValueConstraint : SubtypeSpec",
  1072.     "PresenceConstraint : PRESENT",
  1073.     "PresenceConstraint : ABSENT",
  1074.     "Sctrl : SCTRL",
  1075.     "Sctrl : empty",
  1076. };
  1077. #endif /* YYDEBUG */
  1078. #line 1 "/usr/lib/yaccpar"
  1079. /*    @(#)yaccpar 1.10 89/04/04 SMI; from S5R3 1.10    */
  1080.  
  1081. /*
  1082. ** Skeleton parser driver for yacc output
  1083. */
  1084.  
  1085. /*
  1086. ** yacc user known macros and defines
  1087. */
  1088. #define YYERROR        goto yyerrlab
  1089. #define YYACCEPT    { free(yys); free(yyv); return(0); }
  1090. #define YYABORT        { free(yys); free(yyv); return(1); }
  1091. #define YYBACKUP( newtoken, newvalue )\
  1092. {\
  1093.     if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
  1094.     {\
  1095.         yyerror( "syntax error - cannot backup" );\
  1096.         goto yyerrlab;\
  1097.     }\
  1098.     yychar = newtoken;\
  1099.     yystate = *yyps;\
  1100.     yylval = newvalue;\
  1101.     goto yynewstate;\
  1102. }
  1103. #define YYRECOVERING()    (!!yyerrflag)
  1104. #ifndef YYDEBUG
  1105. #    define YYDEBUG    1    /* make debugging available */
  1106. #endif
  1107.  
  1108. /*
  1109. ** user known globals
  1110. */
  1111. int yydebug;            /* set to 1 to get debugging */
  1112.  
  1113. /*
  1114. ** driver internal defines
  1115. */
  1116. #define YYFLAG        (-1000)
  1117.  
  1118. /*
  1119. ** static variables used by the parser
  1120. */
  1121. static YYSTYPE *yyv;            /* value stack */
  1122. static int *yys;            /* state stack */
  1123.  
  1124. static YYSTYPE *yypv;            /* top of value stack */
  1125. static int *yyps;            /* top of state stack */
  1126.  
  1127. static int yystate;            /* current state */
  1128. static int yytmp;            /* extra var (lasts between blocks) */
  1129.  
  1130. int yynerrs;            /* number of errors */
  1131.  
  1132. int yyerrflag;            /* error recovery flag */
  1133. int yychar;            /* current input token number */
  1134.  
  1135.  
  1136. /*
  1137. ** yyparse - return 0 if worked, 1 if syntax error not recovered from
  1138. */
  1139. int
  1140. yyparse()
  1141. {
  1142.     register YYSTYPE *yypvt;    /* top of value stack for $vars */
  1143.     unsigned yymaxdepth = YYMAXDEPTH;
  1144.  
  1145.     /*
  1146.     ** Initialize externals - yyparse may be called more than once
  1147.     */
  1148.     yyv = (YYSTYPE*)malloc(yymaxdepth*sizeof(YYSTYPE));
  1149.     yys = (int*)malloc(yymaxdepth*sizeof(int));
  1150.     if (!yyv || !yys)
  1151.     {
  1152.         yyerror( "out of memory" );
  1153.         return(1);
  1154.     }
  1155.     yypv = &yyv[-1];
  1156.     yyps = &yys[-1];
  1157.     yystate = 0;
  1158.     yytmp = 0;
  1159.     yynerrs = 0;
  1160.     yyerrflag = 0;
  1161.     yychar = -1;
  1162.  
  1163.     goto yystack;
  1164.     {
  1165.         register YYSTYPE *yy_pv;    /* top of value stack */
  1166.         register int *yy_ps;        /* top of state stack */
  1167.         register int yy_state;        /* current state */
  1168.         register int  yy_n;        /* internal state number info */
  1169.  
  1170.         /*
  1171.         ** get globals into registers.
  1172.         ** branch to here only if YYBACKUP was called.
  1173.         */
  1174.     yynewstate:
  1175.         yy_pv = yypv;
  1176.         yy_ps = yyps;
  1177.         yy_state = yystate;
  1178.         goto yy_newstate;
  1179.  
  1180.         /*
  1181.         ** get globals into registers.
  1182.         ** either we just started, or we just finished a reduction
  1183.         */
  1184.     yystack:
  1185.         yy_pv = yypv;
  1186.         yy_ps = yyps;
  1187.         yy_state = yystate;
  1188.  
  1189.         /*
  1190.         ** top of for (;;) loop while no reductions done
  1191.         */
  1192.     yy_stack:
  1193.         /*
  1194.         ** put a state and value onto the stacks
  1195.         */
  1196. #if YYDEBUG
  1197.         /*
  1198.         ** if debugging, look up token value in list of value vs.
  1199.         ** name pairs.  0 and negative (-1) are special values.
  1200.         ** Note: linear search is used since time is not a real
  1201.         ** consideration while debugging.
  1202.         */
  1203.         if ( yydebug )
  1204.         {
  1205.             register int yy_i;
  1206.  
  1207.             (void)printf( "State %d, token ", yy_state );
  1208.             if ( yychar == 0 )
  1209.                 (void)printf( "end-of-file\n" );
  1210.             else if ( yychar < 0 )
  1211.                 (void)printf( "-none-\n" );
  1212.             else
  1213.             {
  1214.                 for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
  1215.                     yy_i++ )
  1216.                 {
  1217.                     if ( yytoks[yy_i].t_val == yychar )
  1218.                         break;
  1219.                 }
  1220.                 (void)printf( "%s\n", yytoks[yy_i].t_name );
  1221.             }
  1222.         }
  1223. #endif /* YYDEBUG */
  1224.         if ( ++yy_ps >= &yys[ yymaxdepth ] )    /* room on stack? */
  1225.         {
  1226.             /*
  1227.             ** reallocate and recover.  Note that pointers
  1228.             ** have to be reset, or bad things will happen
  1229.             */
  1230.             int yyps_index = (yy_ps - yys);
  1231.             int yypv_index = (yy_pv - yyv);
  1232.             int yypvt_index = (yypvt - yyv);
  1233.             yymaxdepth += YYMAXDEPTH;
  1234.             yyv = (YYSTYPE*)realloc((char*)yyv,
  1235.                 yymaxdepth * sizeof(YYSTYPE));
  1236.             yys = (int*)realloc((char*)yys,
  1237.                 yymaxdepth * sizeof(int));
  1238.             if (!yyv || !yys)
  1239.             {
  1240.                 yyerror( "yacc stack overflow" );
  1241.                 return(1);
  1242.             }
  1243.             yy_ps = yys + yyps_index;
  1244.             yy_pv = yyv + yypv_index;
  1245.             yypvt = yyv + yypvt_index;
  1246.         }
  1247.         *yy_ps = yy_state;
  1248.         *++yy_pv = yyval;
  1249.  
  1250.         /*
  1251.         ** we have a new state - find out what to do
  1252.         */
  1253.     yy_newstate:
  1254.         if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
  1255.             goto yydefault;        /* simple state */
  1256. #if YYDEBUG
  1257.         /*
  1258.         ** if debugging, need to mark whether new token grabbed
  1259.         */
  1260.         yytmp = yychar < 0;
  1261. #endif
  1262.         if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
  1263.             yychar = 0;        /* reached EOF */
  1264. #if YYDEBUG
  1265.         if ( yydebug && yytmp )
  1266.         {
  1267.             register int yy_i;
  1268.  
  1269.             (void)printf( "Received token " );
  1270.             if ( yychar == 0 )
  1271.                 (void)printf( "end-of-file\n" );
  1272.             else if ( yychar < 0 )
  1273.                 (void)printf( "-none-\n" );
  1274.             else
  1275.             {
  1276.                 for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
  1277.                     yy_i++ )
  1278.                 {
  1279.                     if ( yytoks[yy_i].t_val == yychar )
  1280.                         break;
  1281.                 }
  1282.                 (void)printf( "%s\n", yytoks[yy_i].t_name );
  1283.             }
  1284.         }
  1285. #endif /* YYDEBUG */
  1286.         if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
  1287.             goto yydefault;
  1288.         if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar )    /*valid shift*/
  1289.         {
  1290.             yychar = -1;
  1291.             yyval = yylval;
  1292.             yy_state = yy_n;
  1293.             if ( yyerrflag > 0 )
  1294.                 yyerrflag--;
  1295.             goto yy_stack;
  1296.         }
  1297.  
  1298.     yydefault:
  1299.         if ( ( yy_n = yydef[ yy_state ] ) == -2 )
  1300.         {
  1301. #if YYDEBUG
  1302.             yytmp = yychar < 0;
  1303. #endif
  1304.             if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
  1305.                 yychar = 0;        /* reached EOF */
  1306. #if YYDEBUG
  1307.             if ( yydebug && yytmp )
  1308.             {
  1309.                 register int yy_i;
  1310.  
  1311.                 (void)printf( "Received token " );
  1312.                 if ( yychar == 0 )
  1313.                     (void)printf( "end-of-file\n" );
  1314.                 else if ( yychar < 0 )
  1315.                     (void)printf( "-none-\n" );
  1316.                 else
  1317.                 {
  1318.                     for ( yy_i = 0;
  1319.                         yytoks[yy_i].t_val >= 0;
  1320.                         yy_i++ )
  1321.                     {
  1322.                         if ( yytoks[yy_i].t_val
  1323.                             == yychar )
  1324.                         {
  1325.                             break;
  1326.                         }
  1327.                     }
  1328.                     (void)printf( "%s\n", yytoks[yy_i].t_name );
  1329.                 }
  1330.             }
  1331. #endif /* YYDEBUG */
  1332.             /*
  1333.             ** look through exception table
  1334.             */
  1335.             {
  1336.                 register int *yyxi = yyexca;
  1337.  
  1338.                 while ( ( *yyxi != -1 ) ||
  1339.                     ( yyxi[1] != yy_state ) )
  1340.                 {
  1341.                     yyxi += 2;
  1342.                 }
  1343.                 while ( ( *(yyxi += 2) >= 0 ) &&
  1344.                     ( *yyxi != yychar ) )
  1345.                     ;
  1346.                 if ( ( yy_n = yyxi[1] ) < 0 )
  1347.                     YYACCEPT;
  1348.             }
  1349.         }
  1350.  
  1351.         /*
  1352.         ** check for syntax error
  1353.         */
  1354.         if ( yy_n == 0 )    /* have an error */
  1355.         {
  1356.             /* no worry about speed here! */
  1357.             switch ( yyerrflag )
  1358.             {
  1359.             case 0:        /* new error */
  1360.                 yyerror( "syntax error" );
  1361.                 goto skip_init;
  1362.             yyerrlab:
  1363.                 /*
  1364.                 ** get globals into registers.
  1365.                 ** we have a user generated syntax type error
  1366.                 */
  1367.                 yy_pv = yypv;
  1368.                 yy_ps = yyps;
  1369.                 yy_state = yystate;
  1370.                 yynerrs++;
  1371.             skip_init:
  1372.             case 1:
  1373.             case 2:        /* incompletely recovered error */
  1374.                     /* try again... */
  1375.                 yyerrflag = 3;
  1376.                 /*
  1377.                 ** find state where "error" is a legal
  1378.                 ** shift action
  1379.                 */
  1380.                 while ( yy_ps >= yys )
  1381.                 {
  1382.                     yy_n = yypact[ *yy_ps ] + YYERRCODE;
  1383.                     if ( yy_n >= 0 && yy_n < YYLAST &&
  1384.                         yychk[yyact[yy_n]] == YYERRCODE)                    {
  1385.                         /*
  1386.                         ** simulate shift of "error"
  1387.                         */
  1388.                         yy_state = yyact[ yy_n ];
  1389.                         goto yy_stack;
  1390.                     }
  1391.                     /*
  1392.                     ** current state has no shift on
  1393.                     ** "error", pop stack
  1394.                     */
  1395. #if YYDEBUG
  1396. #    define _POP_ "Error recovery pops state %d, uncovers state %d\n"
  1397.                     if ( yydebug )
  1398.                         (void)printf( _POP_, *yy_ps,
  1399.                             yy_ps[-1] );
  1400. #    undef _POP_
  1401. #endif
  1402.                     yy_ps--;
  1403.                     yy_pv--;
  1404.                 }
  1405.                 /*
  1406.                 ** there is no state on stack with "error" as
  1407.                 ** a valid shift.  give up.
  1408.                 */
  1409.                 YYABORT;
  1410.             case 3:        /* no shift yet; eat a token */
  1411. #if YYDEBUG
  1412.                 /*
  1413.                 ** if debugging, look up token in list of
  1414.                 ** pairs.  0 and negative shouldn't occur,
  1415.                 ** but since timing doesn't matter when
  1416.                 ** debugging, it doesn't hurt to leave the
  1417.                 ** tests here.
  1418.                 */
  1419.                 if ( yydebug )
  1420.                 {
  1421.                     register int yy_i;
  1422.  
  1423.                     (void)printf( "Error recovery discards " );
  1424.                     if ( yychar == 0 )
  1425.                         (void)printf( "token end-of-file\n" );
  1426.                     else if ( yychar < 0 )
  1427.                         (void)printf( "token -none-\n" );
  1428.                     else
  1429.                     {
  1430.                         for ( yy_i = 0;
  1431.                             yytoks[yy_i].t_val >= 0;
  1432.                             yy_i++ )
  1433.                         {
  1434.                             if ( yytoks[yy_i].t_val
  1435.                                 == yychar )
  1436.                             {
  1437.                                 break;
  1438.                             }
  1439.                         }
  1440.                         (void)printf( "token %s\n",
  1441.                             yytoks[yy_i].t_name );
  1442.                     }
  1443.                 }
  1444. #endif /* YYDEBUG */
  1445.                 if ( yychar == 0 )    /* reached EOF. quit */
  1446.                     YYABORT;
  1447.                 yychar = -1;
  1448.                 goto yy_newstate;
  1449.             }
  1450.         }/* end if ( yy_n == 0 ) */
  1451.         /*
  1452.         ** reduction by production yy_n
  1453.         ** put stack tops, etc. so things right after switch
  1454.         */
  1455. #if YYDEBUG
  1456.         /*
  1457.         ** if debugging, print the string that is the user's
  1458.         ** specification of the reduction which is just about
  1459.         ** to be done.
  1460.         */
  1461.         if ( yydebug )
  1462.             (void)printf( "Reduce by (%d) \"%s\"\n",
  1463.                 yy_n, yyreds[ yy_n ] );
  1464. #endif
  1465.         yytmp = yy_n;            /* value to switch over */
  1466.         yypvt = yy_pv;            /* $vars top of value stack */
  1467.         /*
  1468.         ** Look in goto table for next state
  1469.         ** Sorry about using yy_state here as temporary
  1470.         ** register variable, but why not, if it works...
  1471.         ** If yyr2[ yy_n ] doesn't have the low order bit
  1472.         ** set, then there is no action to be done for
  1473.         ** this reduction.  So, no saving & unsaving of
  1474.         ** registers done.  The only difference between the
  1475.         ** code just after the if and the body of the if is
  1476.         ** the goto yy_stack in the body.  This way the test
  1477.         ** can be made before the choice of what to do is needed.
  1478.         */
  1479.         {
  1480.             /* length of production doubled with extra bit */
  1481.             register int yy_len = yyr2[ yy_n ];
  1482.  
  1483.             if ( !( yy_len & 01 ) )
  1484.             {
  1485.                 yy_len >>= 1;
  1486.                 yyval = ( yy_pv -= yy_len )[1];    /* $$ = $1 */
  1487.                 yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
  1488.                     *( yy_ps -= yy_len ) + 1;
  1489.                 if ( yy_state >= YYLAST ||
  1490.                     yychk[ yy_state =
  1491.                     yyact[ yy_state ] ] != -yy_n )
  1492.                 {
  1493.                     yy_state = yyact[ yypgo[ yy_n ] ];
  1494.                 }
  1495.                 goto yy_stack;
  1496.             }
  1497.             yy_len >>= 1;
  1498.             yyval = ( yy_pv -= yy_len )[1];    /* $$ = $1 */
  1499.             yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
  1500.                 *( yy_ps -= yy_len ) + 1;
  1501.             if ( yy_state >= YYLAST ||
  1502.                 yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
  1503.             {
  1504.                 yy_state = yyact[ yypgo[ yy_n ] ];
  1505.             }
  1506.         }
  1507.                     /* save until reenter driver code */
  1508.         yystate = yy_state;
  1509.         yyps = yy_ps;
  1510.         yypv = yy_pv;
  1511.     }
  1512.     /*
  1513.     ** code supplied by user is placed in this switch
  1514.     */
  1515.     switch( yytmp )
  1516.     {
  1517.         
  1518. case 1:
  1519. # line 183 "yacc.y"
  1520. {
  1521.                         mymodule = yypvt[-3].yy_string;
  1522.                     mymoduleid = modid;
  1523.                     pass1 ();
  1524.                 } break;
  1525. case 2:
  1526. # line 189 "yacc.y"
  1527. { pass2 (); final_actions++; } break;
  1528. case 4:
  1529. # line 193 "yacc.y"
  1530.                 tagdefault = 0;
  1531.                 tagcontrol = TAG_EXPLICIT;
  1532.             } break;
  1533. case 5:
  1534. # line 197 "yacc.y"
  1535. {
  1536.                 tagdefault = YP_IMPLICIT;
  1537.                 tagcontrol = TAG_IMPLICIT;
  1538.             } break;
  1539. case 6:
  1540. # line 201 "yacc.y"
  1541. {
  1542.                 tagdefault = 0;
  1543.                 tagcontrol = TAG_UNKNOWN;
  1544.             } break;
  1545. case 7:
  1546. # line 207 "yacc.y"
  1547. { yyval.yy_string = yypvt[-1].yy_string; } break;
  1548. case 8:
  1549. # line 210 "yacc.y"
  1550. { modid = yypvt[-0].yy_oid; } break;
  1551. case 10:
  1552. # line 214 "yacc.y"
  1553. {
  1554.                 if (!dflag) {
  1555.                 if (Cflag > 0) {
  1556.                     if (!Pflag && *sysin)
  1557.                     printf ("# line %d \"%s\"\n",
  1558.                         yypvt[-0].yy_action -> ya_lineno, sysin);
  1559.                     fputs (yypvt[-0].yy_action -> ya_text, stdout);
  1560.                 }
  1561.                 else {
  1562.                     printf ("%%{\n#include \"%s-types.h\"\n",
  1563.                         mymodule);
  1564.                     printf ("%s%%}\n", yypvt[-0].yy_action -> ya_text);
  1565.                     Cflag = -1;
  1566.                 }
  1567.                 }
  1568.                 free_action (yypvt[-0].yy_action);
  1569.             } break;
  1570. case 12:
  1571. # line 235 "yacc.y"
  1572. {
  1573.                 yyencdflt = yypvt[-2].yy_string;
  1574.                 yydecdflt = yypvt[-1].yy_string;
  1575.                 yyprfdflt = yypvt[-0].yy_string;
  1576.             } break;
  1577. case 15:
  1578. # line 245 "yacc.y"
  1579. { listtype = TBL_EXPORT; doexternals = 0;
  1580.                    yyporting = 1; } break;
  1581. case 16:
  1582. # line 247 "yacc.y"
  1583. {
  1584.                 yyporting = 0;
  1585.             } break;
  1586. case 20:
  1587. # line 257 "yacc.y"
  1588. { listtype = TBL_IMPORT; yyporting = 1; } break;
  1589. case 21:
  1590. # line 258 "yacc.y"
  1591. {
  1592.                 yyporting = 0;
  1593.             } break;
  1594. case 27:
  1595. # line 274 "yacc.y"
  1596. {
  1597.                     addtableref (yypvt[-0].yy_string, modid, listtype);
  1598.                 } break;
  1599. case 28:
  1600. # line 279 "yacc.y"
  1601. { addtable(yypvt[-0].yy_string, listtype); } break;
  1602. case 29:
  1603. # line 280 "yacc.y"
  1604. { addtable (yypvt[-0].yy_string, listtype); } break;
  1605. case 34:
  1606. # line 292 "yacc.y"
  1607. { yysection = YP_ENCODER; yyencpref = yypvt[-0].yy_string;
  1608.               yyprint (NULLCP, 0, 1); } break;
  1609. case 35:
  1610. # line 295 "yacc.y"
  1611. { yysection = YP_DECODER; yydecpref = yypvt[-0].yy_string;
  1612.               yyprint (NULLCP, 0, 1); } break;
  1613. case 36:
  1614. # line 298 "yacc.y"
  1615. { yysection = YP_PRINTER; yyprfpref = yypvt[-0].yy_string;
  1616.               yyprint (NULLCP, 0, 1); } break;
  1617. case 37:
  1618. # line 301 "yacc.y"
  1619. {
  1620.                 yysection = NULL;
  1621.                 if (strcmp (yyencpref = yypvt[-2].yy_string, "none"))
  1622.                 yysection |= YP_ENCODER;
  1623.                 if (strcmp (yydecpref = yypvt[-1].yy_string, "none"))
  1624.                 yysection |= YP_DECODER;
  1625.                 if (strcmp (yyprfpref = yypvt[-0].yy_string, "none"))
  1626.                 yysection |= YP_PRINTER;
  1627.                 yyprint (NULLCP, 0, 1); 
  1628.             } break;
  1629. case 39:
  1630. # line 314 "yacc.y"
  1631. { yyval.yy_string = yypvt[-0].yy_string; } break;
  1632. case 40:
  1633. # line 315 "yacc.y"
  1634. { yyval.yy_string = yypvt[-0].yy_string; } break;
  1635. case 47:
  1636. # line 332 "yacc.y"
  1637. {
  1638.                 pass1_op (mymodule, yypvt[-7].yy_string, yypvt[-5].yy_type, yypvt[-4].yy_type, yypvt[-3].yy_value, yypvt[-2].yy_value, yypvt[-0].yy_number);
  1639.             } break;
  1640. case 48:
  1641. # line 337 "yacc.y"
  1642. { yyval.yy_type = yypvt[-0].yy_type; } break;
  1643. case 49:
  1644. # line 338 "yacc.y"
  1645. { yyval.yy_type = NULLYP; } break;
  1646. case 50:
  1647. # line 341 "yacc.y"
  1648. { yyval.yy_type = yypvt[-0].yy_type; } break;
  1649. case 51:
  1650. # line 342 "yacc.y"
  1651. { yyval.yy_type = NULLYP; } break;
  1652. case 52:
  1653. # line 345 "yacc.y"
  1654. { yyval.yy_value = yypvt[-1].yy_value; } break;
  1655. case 53:
  1656. # line 346 "yacc.y"
  1657. { yyval.yy_value = NULLYV; } break;
  1658. case 54:
  1659. # line 348 "yacc.y"
  1660. { yyval.yy_value = yypvt[-1].yy_value; } break;
  1661. case 55:
  1662. # line 349 "yacc.y"
  1663. { yyval.yy_value = NULLYV; } break;
  1664. case 56:
  1665. # line 352 "yacc.y"
  1666. {
  1667.                 yyval.yy_value = new_value (YV_VALIST);
  1668.                 yyval.yy_value -> yv_idlist = yypvt[-0].yy_value;
  1669.             } break;
  1670. case 57:
  1671. # line 356 "yacc.y"
  1672. { yyval.yy_value = NULLYV; } break;
  1673. case 58:
  1674. # line 359 "yacc.y"
  1675. {
  1676.                 yyval.yy_value = new_value (YV_VALIST);
  1677.                 yyval.yy_value -> yv_idlist = yypvt[-0].yy_value;
  1678.             } break;
  1679. case 59:
  1680. # line 363 "yacc.y"
  1681. { yyval.yy_value = NULLYV; } break;
  1682. case 60:
  1683. # line 366 "yacc.y"
  1684. {
  1685.                 pass1_err (mymodule, yypvt[-4].yy_string, yypvt[-2].yy_type, yypvt[-0].yy_number);
  1686.             } break;
  1687. case 61:
  1688. # line 371 "yacc.y"
  1689. { yyval.yy_type = yypvt[-0].yy_type; } break;
  1690. case 62:
  1691. # line 372 "yacc.y"
  1692. { yyval.yy_type = NULLYP; } break;
  1693. case 95:
  1694. # line 446 "yacc.y"
  1695. {
  1696.                 if (yypvt[-4].yy_string)
  1697.                     yypvt[-0].yy_type -> yp_param_type = yypvt[-4].yy_string;
  1698.                 if (yypvt[-3].yy_action) {
  1699.                 yypvt[-0].yy_type -> yp_action0 = yypvt[-3].yy_action -> ya_text;
  1700.                 yypvt[-0].yy_type -> yp_act0_lineno= yypvt[-3].yy_action -> ya_lineno;
  1701.                 free_action (yypvt[-3].yy_action);
  1702.                 }
  1703.                 if (yypvt[-1].yy_action) {
  1704.                 if (yypvt[-0].yy_type -> yp_action05 == NULLCP) {
  1705.                     yypvt[-0].yy_type -> yp_action05 = yypvt[-1].yy_action -> ya_text;
  1706.                     yypvt[-0].yy_type -> yp_act05_lineno= yypvt[-1].yy_action -> ya_lineno;
  1707.                     free_action (yypvt[-1].yy_action);
  1708.                 }
  1709.                 else
  1710.                     yyerror("too many preliminary actions associated with type");
  1711.                 }
  1712.                 pass1_type (yyencpref, yydecpref, yyprfpref,
  1713.                     mymodule, yypvt[-5].yy_string, yypvt[-0].yy_type);
  1714.             } break;
  1715. case 96:
  1716. # line 467 "yacc.y"
  1717. {
  1718.                 yyval.yy_type = yypvt[-1].yy_type;
  1719.                 yyval.yy_type -> yp_direction = yysection;
  1720.                 if (yypvt[-0].yy_action) {
  1721.                 yyval.yy_type -> yp_action2 = yypvt[-0].yy_action -> ya_text;
  1722.                 yyval.yy_type -> yp_act2_lineno= yypvt[-0].yy_action -> ya_lineno;
  1723.                 free_action (yypvt[-0].yy_action);
  1724.                 }
  1725.             } break;
  1726. case 97:
  1727. # line 476 "yacc.y"
  1728. {
  1729.                 yyval.yy_type = yypvt[-1].yy_type;
  1730.                 yyval.yy_type -> yp_direction = yysection;
  1731.                 if (yypvt[-0].yy_action) {
  1732.                 yyval.yy_type -> yp_action2 = yypvt[-0].yy_action -> ya_text;
  1733.                 yyval.yy_type -> yp_act2_lineno= yypvt[-0].yy_action -> ya_lineno;
  1734.                 free_action (yypvt[-0].yy_action);
  1735.                 }
  1736.             } break;
  1737. case 98:
  1738. # line 485 "yacc.y"
  1739. {
  1740.                 yyval.yy_type = yypvt[-1].yy_type;
  1741.                 yyval.yy_type -> yp_direction = yysection;
  1742.                 if (yypvt[-0].yy_action) {
  1743.                     yyval.yy_type -> yp_action2 = yypvt[-0].yy_action -> ya_text;
  1744.                 yyval.yy_type -> yp_act2_lineno = yypvt[-0].yy_action -> ya_lineno;
  1745.                 free_action (yypvt[-0].yy_action);
  1746.                 }
  1747.             } break;
  1748. case 100:
  1749. # line 497 "yacc.y"
  1750. { yyval.yy_action = NULLYA; } break;
  1751. case 102:
  1752. # line 501 "yacc.y"
  1753. { yyval.yy_string = NULLCP; } break;
  1754. case 104:
  1755. # line 505 "yacc.y"
  1756. { yyval.yy_string = NULLCP; } break;
  1757. case 105:
  1758. # line 508 "yacc.y"
  1759. {
  1760.                 yyval.yy_type = new_type (YP_BOOL);
  1761.                 yyval.yy_type -> yp_intexp = yypvt[-0].yy_string;
  1762.             } break;
  1763. case 106:
  1764. # line 512 "yacc.y"
  1765. {
  1766.                 yyval.yy_type = new_type (yypvt[-0].yy_value ? YP_INTLIST : YP_INT);
  1767.                 yyval.yy_type -> yp_intexp = yypvt[-1].yy_string;
  1768.                 if (yypvt[-0].yy_value)
  1769.                     yyval.yy_type -> yp_value = yypvt[-0].yy_value;
  1770.                 } break;
  1771. case 107:
  1772. # line 518 "yacc.y"
  1773. {
  1774.                 yyval.yy_type = new_type (YP_ENUMLIST);
  1775.                 yyval.yy_type -> yp_intexp = yypvt[-3].yy_string;
  1776.                 yyval.yy_type -> yp_value = yypvt[-1].yy_value;
  1777.             } break;
  1778. case 108:
  1779. # line 524 "yacc.y"
  1780. {
  1781.                 yyval.yy_type = yypvt[-1].yy_type;
  1782.                     yyval.yy_type -> yp_code = yypvt[-0].yy_value ? YP_BITLIST: YP_BIT;
  1783.                 if (yypvt[-0].yy_value)
  1784.                 yyval.yy_type -> yp_value = yypvt[-0].yy_value;
  1785.             } break;
  1786. case 109:
  1787. # line 530 "yacc.y"
  1788. {
  1789.                 yyval.yy_type = yypvt[-0].yy_type;
  1790.                 yyval.yy_type -> yp_code = YP_OCT;
  1791.             } break;
  1792. case 110:
  1793. # line 534 "yacc.y"
  1794. { yyval.yy_type = new_type (YP_NULL); } break;
  1795. case 111:
  1796. # line 535 "yacc.y"
  1797. {
  1798.                 yyval.yy_type = new_type (YP_SEQ);
  1799.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  1800.             } break;
  1801. case 112:
  1802. # line 539 "yacc.y"
  1803. {
  1804.                 yyval.yy_type = new_type (YP_SEQTYPE);
  1805.                 yyval.yy_type -> yp_type = yypvt[-0].yy_type;
  1806.                 if (yypvt[-3].yy_sctrl) {
  1807.                 yyval.yy_type -> yp_structname = yypvt[-3].yy_sctrl -> ys_structname;
  1808.                 yyval.yy_type -> yp_ptrname = yypvt[-3].yy_sctrl -> ys_ptrname;
  1809.                 free_ys (yypvt[-3].yy_sctrl);
  1810.                 }
  1811.                 if (yypvt[-1].yy_string) {
  1812.                 yyval.yy_type -> yp_control = yypvt[-1].yy_string;
  1813.                 yyval.yy_type -> yp_flags |= YP_CONTROLLED;
  1814.                 }
  1815.                 if (yypvt[-2].yy_action) {
  1816.                 yyval.yy_type -> yp_action3 = yypvt[-2].yy_action -> ya_text;
  1817.                 yyval.yy_type -> yp_act3_lineno = yypvt[-2].yy_action -> ya_lineno;
  1818.                 free_action (yypvt[-2].yy_action);
  1819.                 }
  1820.             } break;
  1821. case 113:
  1822. # line 557 "yacc.y"
  1823. {
  1824.                 yyval.yy_type = new_type (YP_SEQLIST);
  1825.                 yyval.yy_type -> yp_type = yypvt[-1].yy_type;
  1826.                 if (yypvt[-4].yy_sctrl) {
  1827.                 yyval.yy_type -> yp_structname = yypvt[-4].yy_sctrl -> ys_structname;
  1828.                 yyval.yy_type -> yp_ptrname = yypvt[-4].yy_sctrl -> ys_ptrname;
  1829.                 free_ys (yypvt[-4].yy_sctrl);
  1830.                 }
  1831.                 if (yypvt[-3].yy_action && yyval.yy_type -> yp_action1 == NULLCP) {
  1832.                 yyval.yy_type -> yp_action1 = yypvt[-3].yy_action -> ya_text;
  1833.                                 yyval.yy_type -> yp_act1_lineno = yypvt[-3].yy_action -> ya_lineno;
  1834.                                 free_action (yypvt[-3].yy_action);
  1835.                             }
  1836.                             else if (yypvt[-3].yy_action)
  1837.                                 yyerror("too many actions associated with SEQUENCE");
  1838.                 } break;
  1839. case 114:
  1840. # line 573 "yacc.y"
  1841. {
  1842.                 yyval.yy_type = new_type (YP_SET);
  1843.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  1844.             } break;
  1845. case 115:
  1846. # line 577 "yacc.y"
  1847. {
  1848.                 yyval.yy_type = new_type (YP_SETTYPE);
  1849.                 yyval.yy_type -> yp_type = yypvt[-0].yy_type;
  1850.                 if (yypvt[-3].yy_sctrl) {
  1851.                 yyval.yy_type -> yp_structname = yypvt[-3].yy_sctrl -> ys_structname;
  1852.                 yyval.yy_type -> yp_ptrname = yypvt[-3].yy_sctrl -> ys_ptrname;
  1853.                 free_ys (yypvt[-3].yy_sctrl);
  1854.                 }
  1855.                 if (yypvt[-1].yy_string) {
  1856.                 yyval.yy_type -> yp_control = yypvt[-1].yy_string;
  1857.                 yyval.yy_type -> yp_flags |= YP_CONTROLLED;
  1858.                 }
  1859.                 if (yypvt[-2].yy_action) {
  1860.                 yyval.yy_type -> yp_action3 = yypvt[-2].yy_action -> ya_text;
  1861.                 yyval.yy_type -> yp_act3_lineno = yypvt[-2].yy_action -> ya_lineno;
  1862.                 free_action (yypvt[-2].yy_action);
  1863.                 }
  1864.             } break;
  1865. case 116:
  1866. # line 596 "yacc.y"
  1867. {
  1868.                 yyval.yy_type = new_type (YP_SETLIST);
  1869.                 yyval.yy_type -> yp_type = yypvt[-1].yy_type;
  1870.                 if (yypvt[-4].yy_sctrl) {
  1871.                 yyval.yy_type -> yp_structname = yypvt[-4].yy_sctrl -> ys_structname;
  1872.                 yyval.yy_type -> yp_ptrname = yypvt[-4].yy_sctrl -> ys_ptrname;
  1873.                 free_ys (yypvt[-4].yy_sctrl);
  1874.                 }
  1875.                 if (yypvt[-3].yy_action && yyval.yy_type -> yp_action1 == NULLCP) {
  1876.                                 yyval.yy_type -> yp_action1 = yypvt[-3].yy_action -> ya_text;
  1877.                                 yyval.yy_type -> yp_act1_lineno = yypvt[-3].yy_action -> ya_lineno;
  1878.                                 free_action (yypvt[-3].yy_action);
  1879.                             }
  1880.                             else if (yypvt[-3].yy_action)
  1881.                                 yyerror("too many actions associated with SET");
  1882.                 } break;
  1883. case 117:
  1884. # line 612 "yacc.y"
  1885. {
  1886.                 yyval.yy_type = yypvt[-0].yy_type;
  1887.                 yyval.yy_type -> yp_tag = yypvt[-3].yy_tag;
  1888.                 if (yypvt[-2].yy_action && yyval.yy_type -> yp_action1 == NULLCP) {
  1889.                 yyval.yy_type -> yp_action1 = yypvt[-2].yy_action -> ya_text;
  1890.                 yyval.yy_type -> yp_act1_lineno= yypvt[-2].yy_action -> ya_lineno;
  1891.                 free_action (yypvt[-2].yy_action);
  1892.                 }
  1893.                 else if (yypvt[-2].yy_action)
  1894.                 yyerror("too many actions associated with tagged type");
  1895.                 yyval.yy_type -> yp_flags |= YP_IMPLICIT | YP_TAG;
  1896.             } break;
  1897. case 118:
  1898. # line 624 "yacc.y"
  1899. {
  1900.                 yyval.yy_type = yypvt[-0].yy_type;
  1901.                 yyval.yy_type -> yp_tag = yypvt[-3].yy_tag;
  1902.                 if (yypvt[-2].yy_action && yyval.yy_type -> yp_action1 == NULLCP) {
  1903.                 yyval.yy_type -> yp_action1 = yypvt[-2].yy_action -> ya_text;
  1904.                 yyval.yy_type -> yp_act1_lineno= yypvt[-2].yy_action -> ya_lineno;
  1905.                 free_action (yypvt[-2].yy_action);
  1906.                 }
  1907.                 else if (yypvt[-2].yy_action)
  1908.                 yyerror("too many actions associated with tagged type");
  1909.                 yyval.yy_type -> yp_flags |= YP_TAG;
  1910.             } break;
  1911. case 119:
  1912. # line 636 "yacc.y"
  1913. {
  1914.                 yyval.yy_type = yypvt[-0].yy_type;
  1915.                 yyval.yy_type -> yp_tag = yypvt[-2].yy_tag;
  1916.                 if (yypvt[-1].yy_action && yyval.yy_type -> yp_action1 == NULLCP) {
  1917.                 yyval.yy_type -> yp_action1 = yypvt[-1].yy_action -> ya_text;
  1918.                 yyval.yy_type -> yp_act1_lineno= yypvt[-1].yy_action -> ya_lineno;
  1919.                 free_action (yypvt[-1].yy_action);
  1920.                 }
  1921.                 else if (yypvt[-1].yy_action)
  1922.                 yyerror("too many actions associated with tagged type");
  1923.                 yyval.yy_type -> yp_flags |= (YP_TAG | tagdefault);
  1924.             } break;
  1925. case 120:
  1926. # line 649 "yacc.y"
  1927. {
  1928.                 yyval.yy_type = new_type (YP_CHOICE);
  1929.                 yyval.yy_type -> yp_type = yypvt[-1].yy_type;
  1930.                 if (yypvt[-5].yy_sctrl) {
  1931.                 yyval.yy_type -> yp_structname = yypvt[-5].yy_sctrl -> ys_structname;
  1932.                 yyval.yy_type -> yp_ptrname = yypvt[-5].yy_sctrl -> ys_ptrname;
  1933.                 free_ys (yypvt[-5].yy_sctrl);
  1934.                 }
  1935.                 if (yypvt[-3].yy_string) {
  1936.                 yyval.yy_type -> yp_control = yypvt[-3].yy_string;
  1937.                 yyval.yy_type -> yp_flags |= YP_CONTROLLED;
  1938.                 }
  1939.                 if (yyval.yy_type -> yp_action1 == NULLCP && yypvt[-4].yy_action) {
  1940.                 yyval.yy_type -> yp_action1 = yypvt[-4].yy_action -> ya_text;
  1941.                 yyval.yy_type -> yp_act1_lineno = yypvt[-4].yy_action -> ya_lineno;
  1942.                 free_action (yypvt[-4].yy_action);
  1943.                 }
  1944.                 else if (yypvt[-4].yy_action)
  1945.                 yyerror("too many actions associated with CHOICE");
  1946.             } break;
  1947. case 121:
  1948. # line 669 "yacc.y"
  1949. {
  1950.                 yyval.yy_type = yypvt[-0].yy_type;
  1951.                 yyval.yy_type -> yp_bound = yypvt[-2].yy_string;
  1952.                 yyval.yy_type -> yp_flags |= YP_BOUND;
  1953.             } break;
  1954. case 122:
  1955. # line 674 "yacc.y"
  1956. {
  1957.                 yyval.yy_type = new_type (YP_ANY);
  1958.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  1959.             } break;
  1960. case 123:
  1961. # line 678 "yacc.y"
  1962. {
  1963.                 yyval.yy_type = new_type (YP_OID);
  1964.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  1965.             } break;
  1966. case 124:
  1967. # line 682 "yacc.y"
  1968. {
  1969.                 yyval.yy_type = yypvt[-0].yy_type;
  1970.                 yyval.yy_type -> yp_tag = new_tag (PE_CLASS_UNIV);
  1971.                 yyval.yy_type -> yp_tag -> yt_value = new_value(YV_NUMBER);
  1972.                 yyval.yy_type -> yp_tag -> yt_value -> yv_number = PE_PRIM_ENCR;
  1973.                 yyval.yy_type -> yp_flags |=
  1974.                     (YP_ENCRYPTED | YP_TAG | YP_IMPLICIT);
  1975.             } break;
  1976. case 125:
  1977. # line 690 "yacc.y"
  1978. {
  1979.                 yyval.yy_type = new_type(YP_REAL);
  1980.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  1981.             } break;
  1982. case 126:
  1983. # line 696 "yacc.y"
  1984. { yyval.yy_value = yypvt[-1].yy_value; } break;
  1985. case 127:
  1986. # line 697 "yacc.y"
  1987. {    yyval.yy_value = NULL; } break;
  1988. case 128:
  1989. # line 699 "yacc.y"
  1990. {
  1991.                 yyval.yy_type = yypvt[-1].yy_type;
  1992.                 yyval.yy_type -> yp_code = YP_IDEFINED;
  1993.                 yyval.yy_type -> yp_identifier = yypvt[-2].yy_string;
  1994.                 if (yypvt[-0].yy_string) {
  1995.                 yyval.yy_type -> yp_parm = yypvt[-0].yy_string;
  1996.                 yyval.yy_type -> yp_flags |= YP_PARMVAL;
  1997.                 }
  1998. #ifndef    lint
  1999.                 check_impexp (yyval.yy_type);
  2000. #endif
  2001.             } break;
  2002. case 129:
  2003. # line 711 "yacc.y"
  2004. {
  2005.                 yyval.yy_type = yypvt[-1].yy_type;
  2006.                 yyval.yy_type -> yp_code = YP_IDEFINED;
  2007.                 yyval.yy_type -> yp_identifier = yypvt[-2].yy_string;
  2008.                 yyval.yy_type -> yp_module = yypvt[-4].yy_string;
  2009.                 if (yypvt[-0].yy_string) {
  2010.                 yyval.yy_type -> yp_parm = yypvt[-0].yy_string;
  2011.                 yyval.yy_type -> yp_flags |= YP_PARMVAL;
  2012.                 }
  2013.             } break;
  2014. case 130:
  2015. # line 723 "yacc.y"
  2016. {
  2017.                 yyval.yy_type = new_type (YP_UNDF);
  2018.                 yyval.yy_type -> yp_intexp = NULLCP;
  2019.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  2020.                 yyval.yy_type -> yp_prfexp = 'a';
  2021.             } break;
  2022. case 131:
  2023. # line 729 "yacc.y"
  2024. {
  2025.                 yyval.yy_type = new_type (YP_UNDF);
  2026.                 yyval.yy_type -> yp_intexp = yypvt[-0].yy_string;
  2027.                 yyval.yy_type -> yp_strexp = NULLCP;
  2028.                 yyval.yy_type -> yp_prfexp = 'b';
  2029.             } break;
  2030. case 132:
  2031. # line 735 "yacc.y"
  2032. {
  2033.                 yyval.yy_type = new_type (YP_UNDF);
  2034.                 yyval.yy_type -> yp_intexp = yypvt[-0].yy_string;
  2035.                 yyval.yy_type -> yp_strexp = NULLCP;
  2036.                 yyval.yy_type -> yp_prfexp = 'i';
  2037.             } break;
  2038. case 133:
  2039. # line 741 "yacc.y"
  2040. {
  2041.                 yyval.yy_type = new_type (YP_UNDF);
  2042.                 yyval.yy_type -> yp_intexp = yypvt[-0].yy_string;
  2043.                 yyval.yy_type -> yp_strexp = yypvt[-1].yy_string;
  2044.                 yyval.yy_type -> yp_prfexp = 'x';
  2045.             } break;
  2046. case 134:
  2047. # line 747 "yacc.y"
  2048. {
  2049.                 yyval.yy_type = new_type (YP_UNDF);
  2050.                 yyval.yy_type -> yp_intexp = NULLCP;
  2051.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  2052.                 yyval.yy_type -> yp_prfexp = 'O';
  2053.             } break;
  2054. case 139:
  2055. # line 761 "yacc.y"
  2056. { yyval.yy_string = NULLCP; } break;
  2057. case 141:
  2058. # line 765 "yacc.y"
  2059. { yyval.yy_string = NULLCP; } break;
  2060. case 143:
  2061. # line 769 "yacc.y"
  2062. { yyval.yy_string = NULLCP; } break;
  2063. case 145:
  2064. # line 773 "yacc.y"
  2065. { yyval.yy_string = NULLCP; } break;
  2066. case 146:
  2067. # line 776 "yacc.y"
  2068. {
  2069.                 yyval.yy_type = new_type (YP_UNDF);
  2070.                 yyval.yy_type -> yp_intexp = yypvt[-0].yy_string;
  2071.                 yyval.yy_type -> yp_strexp = yypvt[-1].yy_string;
  2072.             } break;
  2073. case 148:
  2074. # line 784 "yacc.y"
  2075. {
  2076.                 yyval.yy_type = new_type (YP_UNDF);
  2077.                 yyval.yy_type -> yp_intexp = NULLCP;
  2078.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  2079.                 yyval.yy_type -> yp_prfexp = 's';
  2080.             } break;
  2081. case 149:
  2082. # line 790 "yacc.y"
  2083. {
  2084.                 yyval.yy_type = new_type (YP_UNDF);
  2085.                 yyval.yy_type -> yp_intexp = yypvt[-0].yy_string;
  2086.                 yyval.yy_type -> yp_strexp = yypvt[-1].yy_string;
  2087.                 yyval.yy_type -> yp_prfexp = 'o';
  2088.             } break;
  2089. case 150:
  2090. # line 796 "yacc.y"
  2091. {
  2092.                 yyval.yy_type = new_type (YP_UNDF);
  2093.                 yyval.yy_type -> yp_intexp = NULLCP;
  2094.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  2095.                 yyval.yy_type -> yp_prfexp = 'q';
  2096.             } break;
  2097. case 153:
  2098. # line 806 "yacc.y"
  2099. { yyval.yy_string = NULLCP; } break;
  2100. case 154:
  2101. # line 809 "yacc.y"
  2102. {
  2103.                 yyval.yy_type = new_type (YP_UNDF);
  2104.                 yyval.yy_type -> yp_intexp = NULLCP;
  2105.                 yyval.yy_type -> yp_strexp = NULLCP;
  2106.             } break;
  2107. case 156:
  2108. # line 817 "yacc.y"
  2109. { yyval.yy_string = NULLCP; } break;
  2110. case 157:
  2111. # line 820 "yacc.y"
  2112. { yyval.yy_value = yypvt[-0].yy_value; } break;
  2113. case 158:
  2114. # line 821 "yacc.y"
  2115. {
  2116.                 yyval.yy_value = add_value (yypvt[-2].yy_value, yypvt[-0].yy_value);
  2117.             } break;
  2118. case 159:
  2119. # line 825 "yacc.y"
  2120. {
  2121.                 yyval.yy_value = yypvt[-2].yy_value;
  2122.                 yyval.yy_value -> yv_named = yypvt[-4].yy_string;
  2123.                 yyval.yy_value -> yv_flags |= YV_NAMED;
  2124.                 if (yypvt[-0].yy_action) {
  2125.                 yyval.yy_value -> yv_action = yypvt[-0].yy_action -> ya_text;
  2126.                 yyval.yy_value -> yv_act_lineno = yypvt[-0].yy_action -> ya_lineno;
  2127.                 free_action (yypvt[-0].yy_action);
  2128.                 }
  2129.             } break;
  2130. case 160:
  2131. # line 836 "yacc.y"
  2132. {
  2133.                 yyval.yy_value = new_value (YV_NUMBER);
  2134.                 yyval.yy_value -> yv_number = yypvt[-0].yy_number;
  2135.             } break;
  2136. case 162:
  2137. # line 843 "yacc.y"
  2138. { yyval.yy_type = yypvt[-0].yy_type; } break;
  2139. case 163:
  2140. # line 844 "yacc.y"
  2141. { yyval.yy_type = NULLYP; } break;
  2142. case 164:
  2143. # line 846 "yacc.y"
  2144. { yyval.yy_type = yypvt[-0].yy_type; } break;
  2145. case 165:
  2146. # line 848 "yacc.y"
  2147. { yyval.yy_type = NULLYP; } break;
  2148. case 166:
  2149. # line 850 "yacc.y"
  2150. { yyval.yy_type = yypvt[-0].yy_type; } break;
  2151. case 167:
  2152. # line 851 "yacc.y"
  2153. {
  2154.                 yyval.yy_type = add_type (yypvt[-2].yy_type, yypvt[-0].yy_type);
  2155.             } break;
  2156. case 168:
  2157. # line 855 "yacc.y"
  2158. { yyval.yy_type = yypvt[-0].yy_type; } break;
  2159. case 169:
  2160. # line 856 "yacc.y"
  2161. {
  2162.                 yyval.yy_type = yypvt[-2].yy_type;
  2163.                 yyval.yy_type -> yp_flags |= YP_OPTIONAL;
  2164.                 if (yypvt[-0].yy_string) {
  2165.                 yyval.yy_type -> yp_optcontrol = yypvt[-0].yy_string;
  2166.                 yyval.yy_type -> yp_flags |= YP_OPTCONTROL;
  2167.                 }
  2168.             } break;
  2169. case 170:
  2170. # line 864 "yacc.y"
  2171. {
  2172.                 yyval.yy_type = yypvt[-3].yy_type;
  2173.                 yyval.yy_type -> yp_default = yypvt[-1].yy_value;
  2174.                 yyval.yy_type -> yp_flags |= YP_DEFAULT;
  2175.                 if (yypvt[-0].yy_string) {
  2176.                 yyval.yy_type -> yp_optcontrol = yypvt[-0].yy_string;
  2177.                 yyval.yy_type -> yp_flags |= YP_OPTCONTROL;
  2178.                 }
  2179.             } break;
  2180. case 171:
  2181. # line 873 "yacc.y"
  2182. { yyval.yy_type = yypvt[-0].yy_type; } break;
  2183. case 172:
  2184. # line 874 "yacc.y"
  2185. { yyval.yy_type = yypvt[-0].yy_type; yyval.yy_type->yp_id = yypvt[-1].yy_string; } break;
  2186. case 173:
  2187. # line 876 "yacc.y"
  2188. {
  2189.                 yyval.yy_type = yypvt[-0].yy_type;
  2190.                 yyval.yy_type -> yp_id = yypvt[-2].yy_string;
  2191.                 if (yyval.yy_type -> yp_action1 == NULLCP && yypvt[-1].yy_action) {
  2192.                 yyval.yy_type -> yp_action1 = yypvt[-1].yy_action -> ya_text;
  2193.                 yyval.yy_type -> yp_act1_lineno = yypvt[-1].yy_action -> ya_lineno;
  2194.                 free_action (yypvt[-1].yy_action);
  2195.                 }
  2196.                 yyval.yy_type -> yp_flags |= YP_ID;
  2197.             } break;
  2198. case 174:
  2199. # line 886 "yacc.y"
  2200. { yyval.yy_type = yypvt[-0].yy_type; } break;
  2201. case 175:
  2202. # line 888 "yacc.y"
  2203. {
  2204.                 yyval.yy_type = yypvt[-0].yy_type;
  2205.                 yyval.yy_type -> yp_flags |= YP_COMPONENTS;
  2206.             } break;
  2207. case 176:
  2208. # line 893 "yacc.y"
  2209. { yyval.yy_type = yypvt[-0].yy_type; } break;
  2210. case 177:
  2211. # line 894 "yacc.y"
  2212. {
  2213.                 yyval.yy_type = add_type (yypvt[-2].yy_type, yypvt[-0].yy_type);
  2214.             } break;
  2215. case 178:
  2216. # line 899 "yacc.y"
  2217. {
  2218.                 yyval.yy_tag = yypvt[-2].yy_tag;
  2219.                 yyval.yy_tag -> yt_value = yypvt[-1].yy_value;
  2220.             } break;
  2221. case 179:
  2222. # line 904 "yacc.y"
  2223. { yyval.yy_tag = new_tag (PE_CLASS_UNIV); } break;
  2224. case 180:
  2225. # line 905 "yacc.y"
  2226. { yyval.yy_tag = new_tag (PE_CLASS_APPL); } break;
  2227. case 181:
  2228. # line 906 "yacc.y"
  2229. { yyval.yy_tag = new_tag (PE_CLASS_PRIV); } break;
  2230. case 182:
  2231. # line 907 "yacc.y"
  2232. { yyval.yy_tag = new_tag (PE_CLASS_CONT); } break;
  2233. case 186:
  2234. # line 917 "yacc.y"
  2235. {
  2236.                 yyval.yy_value = new_value (YV_BOOL);
  2237.                 yyval.yy_value -> yv_number = 1;
  2238.             } break;
  2239. case 187:
  2240. # line 921 "yacc.y"
  2241. {
  2242.                 yyval.yy_value = new_value (YV_BOOL);
  2243.                 yyval.yy_value -> yv_number = 0;
  2244.             } break;
  2245. case 188:
  2246. # line 925 "yacc.y"
  2247. {
  2248.                 yyval.yy_value = new_value (YV_NUMBER);
  2249.                 yyval.yy_value -> yv_number = yypvt[-0].yy_number;
  2250.             } break;
  2251. case 189:
  2252. # line 929 "yacc.y"
  2253. {
  2254.                 yyval.yy_value = new_value (YV_IDLIST);
  2255.                 yyval.yy_value -> yv_idlist = new_value (YV_IDEFINED);
  2256.                 yyval.yy_value -> yv_idlist -> yv_identifier = yypvt[-2].yy_string;
  2257.                 if (yypvt[-1].yy_value)
  2258.                     yyval.yy_value = add_value (yyval.yy_value, yypvt[-1].yy_value);
  2259.             } break;
  2260. case 190:
  2261. # line 936 "yacc.y"
  2262. {
  2263.                 yyval.yy_value = new_value (YV_STRING);
  2264.                 yyval.yy_value -> yv_string = yypvt[-0].yy_string;
  2265.             } break;
  2266. case 191:
  2267. # line 940 "yacc.y"
  2268. { yyval.yy_value = new_value (YV_NULL); } break;
  2269. case 192:
  2270. # line 941 "yacc.y"
  2271. {
  2272.                 yyval.yy_value = new_value (YV_VALIST);
  2273.                 yyval.yy_value -> yv_idlist = yypvt[-1].yy_value;
  2274.             } break;
  2275. case 193:
  2276. # line 945 "yacc.y"
  2277. {
  2278.                 yyval.yy_value = yypvt[-0].yy_value;
  2279.                 yyval.yy_value -> yv_id = yypvt[-1].yy_string;
  2280.                 yyval.yy_value -> yv_flags |= YV_ID;
  2281.             } break;
  2282. case 194:
  2283. # line 950 "yacc.y"
  2284. {
  2285.                 yyval.yy_value = yypvt[-0].yy_value;
  2286.                 yyval.yy_value -> yv_type = yypvt[-1].yy_type;
  2287.                 yyval.yy_value -> yv_flags |= YV_TYPE;
  2288.             } break;
  2289. case 195:
  2290. # line 955 "yacc.y"
  2291. {
  2292.                 yyval.yy_value = new_value (YV_REAL);
  2293.                 yyval.yy_value -> yv_real = yypvt[-0].yy_real;
  2294.             } break;
  2295. case 198:
  2296. # line 965 "yacc.y"
  2297. { yyval.yy_real = PE_REAL_INFINITY;} break;
  2298. case 199:
  2299. # line 966 "yacc.y"
  2300. { yyval.yy_real = - PE_REAL_INFINITY; } break;
  2301. case 200:
  2302. # line 970 "yacc.y"
  2303. {
  2304.                 if (yypvt[-3].yy_number != 2 && yypvt[-3].yy_number != 10)
  2305.                     myyerror ("Illegal base value %d", yypvt[-3].yy_number);
  2306.                 yyval.yy_real = yypvt[-5].yy_number * pow ((double)yypvt[-3].yy_number, (double)yypvt[-1].yy_number);
  2307.             } break;
  2308. case 201:
  2309. # line 977 "yacc.y"
  2310. {
  2311.                 yyval.yy_value = new_value (YV_IDEFINED);
  2312.                 yyval.yy_value -> yv_identifier = yypvt[-0].yy_string;
  2313.             } break;
  2314. case 202:
  2315. # line 981 "yacc.y"
  2316. {    /* XXX */
  2317.                 yyval.yy_value = new_value (YV_IDEFINED);
  2318.                 yyval.yy_value -> yv_identifier = yypvt[-0].yy_string;
  2319.                 yyval.yy_value -> yv_flags |= YV_BOUND;
  2320.             } break;
  2321. case 203:
  2322. # line 986 "yacc.y"
  2323. {
  2324.                 yyval.yy_value = new_value (YV_IDEFINED);
  2325.                 yyval.yy_value -> yv_identifier = yypvt[-0].yy_string;
  2326.                 yyval.yy_value -> yv_module = yypvt[-2].yy_string;
  2327.             } break;
  2328. case 204:
  2329. # line 993 "yacc.y"
  2330. {
  2331.                 yyval.yy_value = new_value (YV_IDEFINED);
  2332.                 yyval.yy_value -> yv_identifier = yypvt[-0].yy_string;
  2333.                 if (yypvt[-2].yy_value)
  2334.                     yyval.yy_value = add_value (yypvt[-2].yy_value, yyval.yy_value);
  2335.             } break;
  2336. case 205:
  2337. # line 999 "yacc.y"
  2338. { yyval.yy_value = NULLYV; } break;
  2339. case 206:
  2340. # line 1002 "yacc.y"
  2341. { yyval.yy_value = yypvt[-0].yy_value; } break;
  2342. case 207:
  2343. # line 1003 "yacc.y"
  2344. { yyval.yy_value = NULLYV; } break;
  2345. case 208:
  2346. # line 1005 "yacc.y"
  2347. { yyval.yy_value = yypvt[-0].yy_value; } break;
  2348. case 209:
  2349. # line 1006 "yacc.y"
  2350. {
  2351.                 yyval.yy_value = add_value (yypvt[-2].yy_value, yypvt[-0].yy_value);
  2352.             } break;
  2353. case 210:
  2354. # line 1010 "yacc.y"
  2355. { yyval.yy_value = yypvt[-0].yy_value; } break;
  2356. case 222:
  2357. # line 1034 "yacc.y"
  2358. { yyval.yy_oid = yypvt[-1].yy_oid; } break;
  2359. case 224:
  2360. # line 1039 "yacc.y"
  2361. {
  2362.                 yyval.yy_oid = addoid(yypvt[-1].yy_oid, yypvt[-0].yy_oid);
  2363.                 oid_free (yypvt[-1].yy_oid);
  2364.                 oid_free (yypvt[-0].yy_oid);
  2365.             } break;
  2366. case 227:
  2367. # line 1050 "yacc.y"
  2368. { yyval.yy_oid = int2oid (yypvt[-0].yy_number); } break;
  2369. case 228:
  2370. # line 1051 "yacc.y"
  2371. {
  2372.                 yyval.yy_oid = oidlookup(yypvt[-0].yy_value->yv_identifier);
  2373.                 free((char *)yypvt[-0].yy_value);
  2374.             } break;
  2375. case 229:
  2376. # line 1057 "yacc.y"
  2377. {
  2378.                 free (yypvt[-3].yy_string);
  2379.                 yyval.yy_oid = yypvt[-1].yy_oid;
  2380.             } break;
  2381. case 231:
  2382. # line 1064 "yacc.y"
  2383. {
  2384.                 yyval.yy_type = new_type (YP_SETTYPE);
  2385.                 yyval.yy_type -> yp_type = yypvt[-0].yy_type;
  2386.                 if (yypvt[-3].yy_sctrl) {
  2387.                 yyval.yy_type -> yp_structname = yypvt[-3].yy_sctrl -> ys_structname;
  2388.                 yyval.yy_type -> yp_ptrname = yypvt[-3].yy_sctrl -> ys_ptrname;
  2389.                 free_ys (yypvt[-3].yy_sctrl);
  2390.                 }
  2391.                 if (yypvt[-1].yy_string) {
  2392.                     yyval.yy_type -> yp_control = yypvt[-1].yy_string;
  2393.                 yyval.yy_type -> yp_flags |= YP_CONTROLLED;
  2394.                 }
  2395.                 if (yypvt[-2].yy_action) {
  2396.                     yyval.yy_type -> yp_action3 = yypvt[-2].yy_action -> ya_text;
  2397.                 yyval.yy_type -> yp_act2_lineno = yypvt[-2].yy_action -> ya_lineno;
  2398.                 free_action (yypvt[-2].yy_action);
  2399.                 }                  
  2400.                 } break;
  2401. case 232:
  2402. # line 1083 "yacc.y"
  2403. {
  2404.                 yyval.yy_type = new_type (YP_SEQTYPE);
  2405.                 yyval.yy_type -> yp_type = yypvt[-0].yy_type;
  2406.                 if (yypvt[-3].yy_sctrl) {
  2407.                 yyval.yy_type -> yp_structname = yypvt[-3].yy_sctrl -> ys_structname;
  2408.                 yyval.yy_type -> yp_ptrname = yypvt[-3].yy_sctrl -> ys_ptrname;
  2409.                 free_ys (yypvt[-3].yy_sctrl);
  2410.                 }
  2411.                 if (yypvt[-1].yy_string) {
  2412.                 yyval.yy_type -> yp_control = yypvt[-1].yy_string;
  2413.                 yyval.yy_type -> yp_flags |= YP_CONTROLLED;
  2414.                 }
  2415.                 if (yypvt[-2].yy_action) {
  2416.                 yyval.yy_type -> yp_action3 = yypvt[-2].yy_action -> ya_text;
  2417.                 yyval.yy_type -> yp_act3_lineno = yypvt[-2].yy_action -> ya_lineno;
  2418.                 free_action (yypvt[-2].yy_action);
  2419.                 }
  2420.             } break;
  2421. case 273:
  2422. # line 1188 "yacc.y"
  2423. { yyval.yy_sctrl = new_ys (yypvt[-0].yy_string); } break;
  2424. case 274:
  2425. # line 1189 "yacc.y"
  2426. { yyval.yy_sctrl = NULLYS; } break;
  2427.     }
  2428.     goto yystack;        /* reset registers in driver code */
  2429. }
  2430.